我最近在Laravel环境或Windows 10的一部分更新时出现了一些错误,因此在经过大量试验和错误后,我决定删除所有内容并从头开始.所以现在我有了新的VirtualBox,Vagrant,Laravel/Homestead盒子和Homestead本身.
但是,我确实收到此错误:
$ vagrant up
Bringing machine 'homestead-7' up with 'virtualbox' provider...
==> homestead-7: Importing base box 'laravel/homestead'...
==> homestead-7: Matching MAC address for NAT networking...
==> homestead-7: Checking if box 'laravel/homestead' is up to date...
==> homestead-7: Setting the name of the VM: homestead-7
==> homestead-7: Destroying VM and associated drives...
C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.3/lib/vagrant/util/is_port_open.rb:21:in `initialize': The requested address is not valid in its context. - connect(2) for "0.0.0.0" port 8000 (Errno::EADDRNOTAVAIL)
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.3/lib/vagrant/util/is_port_open.rb:21:in `new'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.3/lib/vagrant/util/is_port_open.rb:21:in `block in is_port_open?'
from …Run Code Online (Sandbox Code Playgroud) 我的项目中有产品和类别模型.产品属于Category.由于Product有外键category_id,我可以轻松地对输出进行排序,如下所示:
$products = Product::orderBy('category_id', 'asc')->get();
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是按类别名称对产品进行排序,所以我尝试了:
$products = Product::with(['categories' => function($q){
$q->orderBy('name', 'asc')->first();
}]);
Run Code Online (Sandbox Code Playgroud)
但这没有任何结果.作为测试,我已经返回return Product::with('categories')->first();,它输出正常...
这是雄辩的关系.
产品
class Product extends Model
{
protected $fillable = [
'name',
'description',
'price',
'category_id',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function categories()
{
return $this->belongsTo('\App\Category', 'category_id');
}
}
Run Code Online (Sandbox Code Playgroud)
类别:
class Category extends Model
{
protected $fillable = [
'name'
];
public function products()
{
return $this->hasMany('\App\Product');
}
}
Run Code Online (Sandbox Code Playgroud)
而观点部分:
@foreach ($products as $product)
<tr>
<td>{!! $product->categories->name !!}</td>
<td> …Run Code Online (Sandbox Code Playgroud) 有没有办法一次性更改C#对象值...在一行?
所以,如果我有一个Result带有string msg和的类,并且bool isPositive我已经在某处之前调用了构造函数,就像var result = new Result();我可以通过不输入以某种方式更改值:
result.msg = "xxxxxx";
result.bool = false;
Run Code Online (Sandbox Code Playgroud)
但是做一些像实例化时你可以做的事情:
result { msg = "", bool = true}
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式再次实例化一个新对象来实现:
var result = new Result() { msg = "", bool = true}
Run Code Online (Sandbox Code Playgroud)
但这不是我的问题:)
我知道CSRF攻击是什么,我已经阅读了有关它的文档,但是我无法理解CSRF保护如何深入工作,并且有一些我无法找到的一般性问题.
在文档中,它说Laravel会自动为其生成令牌
...由应用程序管理的每个活动用户会话.
session.php?session.php120分钟的默认生命周期相同?domain属性设置为导航到同一个应用程序处理的子域,那么该cookie会发生什么"." . env('APP_URL')?因此,一旦令牌被创建并存储在某个地方,在发出请求时,我必须向csrf_token()表单提供隐藏属性,或者将其生成为元字段并在我正在执行AJAX请求时重定向到我的JS文件.
那么当我实际提出请求时,在低级别会发生什么?请求生成csrf_token(),Laravel加密cookie,Laravel检查发送的cookie是否与会话中的cookie相同.如果是,则表示请求有效,如果不是,则抛出TokenMissmatchException?
这是否意味着cookie生命周期内的每个请求都具有相同的令牌?
Laravel是否以不同方式加密请求和响应cookie?如果我在EncryptCookies类I中从cookie加密中排除令牌获得相同的令牌,但是当我离开它时,哈希是不同的.
如何_token在请求数据中提供与转发令牌不同的X-CSRF-TOKEN标头?如果我看到它们未加密,Laravel如何验证这些?请求后他们是否加密?
是否可以在Alpine 3.12 Docker 镜像上安装 PHP7.4 ?
我已经看到这个 repo及其使用 bintray 证书和存储库路径的 dockerfile,但我想知道是否有更“标准/高山”的本地方式来做这件事?
div如果它还没有,我想追加一个.我正在尝试这个但它不起作用:
$('#method_id').on('change', function (e) {
if ($(this).find("option:selected").data('method-column-id') != 1) {
if ($('#column_message').next('div').length)
$('#column_message')
.append('<div id="warning_message" class="alert alert-danger"><strong>Warning!</strong> Installed column and method do not match</div>');
} else {
$('.form-group').find('#column_message>.alert').remove();
}
});
Run Code Online (Sandbox Code Playgroud)
如果我删除第二个if子句,每次选择传递第一个if子句的选项时都会附加它
这是HTML
<!-- Warning message -->
<div class="form-group">
<label for="group" class="col-md-2 control-label"></label>
<div id="column_message" class="col-md-6">
</div>
</div>
Run Code Online (Sandbox Code Playgroud) Laravel是否有不同的请求和响应cookie?
我正在使用主域和子域,并设置了CORS和CSRF,如果我从EncryptCookies类中排除cookie,我会在响应头和请求头中看到相同的cookie.
但是,如果我让它们加密,我会得到不同的"加密字符串",并且不知道这是否是可接受的行为?
EncryptCookiesclass仅列在web部分中Kernel.php
我有一个奇怪的行为,我在主屏幕上渲染了基于存储在数据库中的 HTML 的代码。
\n\n如果我getElementById(\xe2\x80\x98myGivenId\xe2\x80\x99)在 Chrome 检查器的控制台中这样做,我会得到null. 但是,当我单击检查元素(屏幕上的任何位置)并尝试再次获取元素后,它就会出现。
如何让元素默认“可查找”?
\n\n代码部分:
\n\n<div class="hidden popupbox" data-contentid="666">\n <iframe width="16" height="9" src="//www.youtube.com/embed/...modestbranding=1" autohide="1"\n frameborder="0" allowfullscreen="" class="video" id="myGivenId"></iframe>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n\n正在做document.getElementById(\'myGivenId\')
我在REST服务中解析JSON整数时遇到问题.解析String和double类型工作正常
工作:
JSONParser parser = new JSONParser();
Object obj = null;
try {
obj = parser.parse(input);
} catch (ParseException e) {
e.printStackTrace();
}
JSONObject jsonObject = (JSONObject) obj;
//---------------
String uName = (String) jsonObject.get("userName");
double iPrice = (Double) jsonObject.get("itemPrice");
Run Code Online (Sandbox Code Playgroud)
不工作:
int baskId = (Integer) jsonObject.get("basketId");
Run Code Online (Sandbox Code Playgroud)
我试图将basketId我的篮子类转换为String,然后它运行正常,所以代码没问题,链接正常,但是,当我把它转回int时,我得到500服务器错误.我用它来创建一个带有一些数字ID的新篮子,所以我使用@POST注释,有效载荷中的JSON如下:
{"basketId":50}
Run Code Online (Sandbox Code Playgroud)
我不明白......
编辑:我确实得到它... JSON simple接受更大类型的Java原语,所以整数和浮点数是禁止的
从子域向我的域发出请求时,我似乎遇到了 CSRF 保护问题。我已设置 CORS,但预检检查失败。
我已经在我的主脑中设置了
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
并附加到每个ajax请求:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Run Code Online (Sandbox Code Playgroud)
我的 CORS 设置:
return $next($request)
->header('Access-Control-Allow-Origin', $allowedUrl)
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'x-csrf-token');
Run Code Online (Sandbox Code Playgroud)
请求失败:
无法加载https://example.com/account/login-ajax:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ https://sub.example.com ”。