这是我的代码:
public function store(Request $request)
{
try {
$this->validate($request, [
'activity_licenses' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
]);
} catch (\ValidationException $e) {
return [false, $e->getMessage()];
}
.
.
.
实际上activity_licenses
是一个数组。这是HTML:
<input type="file" name="activity_licenses[] />
<input type="file" name="activity_licenses[] />
我该如何验证?更重要的是,我怎样才能找到失败的原因(错误信息)?目前$e->getMessage()
在失败时为空。
答案 0 :(得分:0)
尝试:
$input_data = $request->all();
$validator = Validator::make(
$input_data, [
'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000'
],[
'image_file.*.required' => 'Please upload an image',
'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed',
'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB',
]
);
if ($validator->fails()) {
// Validation error..
}
答案 1 :(得分:0)
在Laravel doc中描述了数组验证,并使用您的案例,它应该是:
$this->validate($request, [
'activity_licenses.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
])
使用控制器中的$this->validate()
,错误消息会自动传递给您的视图,变量$errors
会保留它。您应该检查:使用Laravel doc
一个例子(取自文档):
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
您可能希望通过以这种方式调用验证器manually进行验证:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
我的建议是你应该阅读文档。