所以我在这里https://laracasts.com/series/laravel-from-scratch-2018/episodes/19上学习本教程,而我刚遇到
public function complete($completed = true){
$this->update(compact('completed'));
}
我使用它的方式就是这样,
public function update(Task $task){
$task->complete(request()->has('completed'));
return back();
}
这个complete($ completed = true)函数如何工作?还对has()的工作方式有点迷失了,它要求检查请求是否具有带有“ completed”字段的对象?
答案 0 :(得分:1)
从$request->has('completed')
开始,request()->has()
检查request()
数据中是否存在密钥。
它不检查值,因此request()->get('completed')
的值可以是null
或可以有值,但是在这种情况下,$request->has('completed')
仅返回密钥是否为存在,而不关心该值。
在public function completed($completed = true)
上,显然$completed
的值将是boolean
的{{1}}响应。
然后,您必须了解request()->has('completed')
将变量compact('completed')
转换为数组$completed
或['completed'=>true]
。
假设您将3个变量['completed'=> false]
,$foo = apple
,$bar = banana
传递给$baz = carrot
,它将把每个变量及其值变成一个关联数组,就像{{ 1}}
鉴于上述compact('foo','bar','baz')
与['foo' => 'apple', 'bar'=>'banana','baz'=>'carrot']
完全相同