Laravel 8 -将验证错误传递回前端



我使用的是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">&times;</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

相关内容

  • 没有找到相关文章

最新更新