我使用的是Laravel Framework 8.62.0
。
我用下面的方式验证一个表单:
$validator = Validator::make($request->all(), [
'title_field' => 'required|min:3|max:100',
'comment_textarea' => 'max:800',
'front_image' => 'required|mimes:jpg,jpeg,png,bmp,tif',
'back_image' => 'required|mimes:jpg,jpeg,png,bmp,tif',
'price' => "required|numeric|gt:0",
'sticker_numb' => "required|numeric|gt:0",
'terms-checkbox' => "accepted",
]);
if ($validator->fails()) {
// Ooops.. something went wrong
return Redirect::back()->withInput();//->withErrors($this->messageBag);
}
我想以如下方式在前端显示错误:
@if ($errors->any())
<div class="alert alert-danger alert-dismissable margin5">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<strong>Errors:</strong> Please check below for errors
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
但是,当验证错误存在时,我的$error
变量为空,因此验证错误不会在我的前端显示。
有什么建议我做错了吗?
感谢您的回复!
您应该像这样将$validator
传递给withErrors
:
if ($validator->fails()) {
// Ooops.. something went wrong
return Redirect::back()->withErrors($validator)->withInput();
}
那是因为你没有传递错误。
试试这个:
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
正如前面的演讲者所说,您当然必须返回错误。但您也可以使用请求验证助手。这是自动的。
$request->validate([...])
一旦出现错误,它就返回一个包含错误的响应。
https://laravel.com/docs/8.x/validation quick-writing-the-validation-logic