使用FormRequest时,某些字段不会发送。在一个项目中,我不得不在可能无限的输入数组上使用一些自定义验证:
<input type="file" name="image[1]" />
<input type="file" name="image[2]" />
等...
为了验证这些,我创建了一个名为StoreProject的FormRequest:
public function rules()
{
$rules = [
'title' => 'required',
];
foreach( $this->request->get( 'image' ) as $key => $val )
{
$rules['image.'.$key] = 'image';
}
return $rules;
}
在我的控制器功能中,我注意到通过请求发送的内容存在差异。
如果我的控制器看起来像这样:
public function store(StoreProject $request)
{
dd( $request->all() );
}
我的数组输入都没有包含在请求中。而如果我像这样使用标准请求。
public function store(Request $request)
{
dd( $request->all() );
}
我的数组输入显示正常。
有谁知道为什么会这样?或者我仍然可以在使用自定义验证的同时访问这些图像?
答案 0 :(得分:0)
您可以使用*
运算符验证数组:
public function rules()
{
return [
'title' => 'required',
'image.*' => 'image',
];
}
答案 1 :(得分:0)
https://laravel.com/docs/5.5/requests#retrieving-uploaded-files
$request->all()
不包含上传的文件输入。你必须使用:
$request->file('image')
方法或$request->image
动态属性。