当表单文件名总是不同时,如何为请求中的每个图像运行验证器。
我的表单文件名可以从file1
一直到section_1_image[0][]
。
我需要创建一个验证,我可以粘贴到每个控制器中,检查发布请求并验证所有文件是否存在
这是我到目前为止所拥有的
$validator = Validator::make($request->all(), [
'items' => 'array',
]);
$validator->each('items', [
'*' => 'max:50'
]);
if ($validator->fails()) {
echo 'Error';
exit;
}
但这似乎没有做任何事情,只是被忽略了?
答案 0 :(得分:0)
我建议您将所有文件名更改为files[ file_name]
<input type="file" name="files[first]">
<input type="file" name="files[section_1_image]">
这样你在每个控制器中都有
$validator = Validator::make($request->all(), [
...
'files.*' => 'file_rules...',
]);
答案 1 :(得分:0)
使用请求中存在的文件名构建自定义规则数组,并根据它验证请求。
use Illuminate\Support\Facades\Input;
//code
$rule = [];
foreach (Input::file() as $key => $value) {
$rule = $rule + [$key => 'max:50'];
}
$validator = Validator::make($request->all(), $rule);
if ($validator->fails()) {
//validation failed
//custom error message common for all file(optional)
$validator->errors()->add('image_size_error', 'Images size exceeds!');
return redirect()
->back()
->withErrors($validator)
->withInput();
}
希望有所帮助......