请问 Request 中 attributes 有什么用呢?
Request 中,我看都写了 attributes() 方法,但是这个方法有什么作用呢,没看到调用,而且laravel 5.5 Request 中也没有介绍到这个方法。
public function attributes()
{
return [
'title' => '标题',
'body' => '话题内容',
'category_id' => '分类',
];
}
关于 LearnKu
class TopicRequest extends FormRequest, 因此在class TopicRequest添加attributes方法就是设置 验证失败时字段(attributes)的名称。从源码分析的话,就比较复杂了:
class FormRequest使用了ValidatesWhenResolvedTrait,因此在注入 TopicRequest时会去执行 validateResolved()方法,从而创建一个新的 Validator instance,在这里就设置了$this->customAttributes = $customAttributes;,这里的customAttributes就是\App\Http\Requests\Api\TopicRequest::attributes中的字段显示名。\Illuminate\Validation\Concerns\FormatsMessages::getDisplayableAttribute中,可以看到如下代码注入request类的验证逻辑代码主要在
\Illuminate\Validation\ValidatesWhenResolvedTrait::validateResolved中,从这里发散开去看源码。