【发布时间】:2021-01-01 23:30:36
【问题描述】:
我在一个页面上有多个带有验证的表单,因此一旦提交,它就会在每个表单上显示验证错误。我想防止这种情况发生,所以如果提交了表单 1,我只想显示表单 1 的验证消息,而不显示表单 2。
这就是我目前的想法:
控制器
public function composeMail(Request $request)
{
$validator = Validator::make($request->all(),
[
'subject' => 'max:40|regex:/^[A-Za-z]+$/u',
'body' => 'required|min:1|max:1000|regex:/^[A-Za-z0-9]+$/u'
],
[
'subject.max' => 'Subject can be maximum 40 symbols length.',
'subject.regex' => 'In subject Only numbers and latin letters is allowed.',
'body.required' => 'Message cannot be empty.',
'body.min' => 'Message shall contain at least one character.',
'body.max' => 'Message can be only 10000 symbols length.',
'body.regex' => 'In message only numbers and latin letters is allowed.',
])->validateWithBag('email');
return redirect()->back()->withErrors($validator);
观看次数
@if ($errors->any())
<div class="alert">
<ul>
@foreach ($validator->email as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
目前它只是返回页面,没有任何反应,验证不起作用,也没有打印出任何东西......你能告诉我它有什么问题吗?
【问题讨论】:
-
如果有帮助请查看question
-
不需要这一行
return redirect()->back()->withErrors($validator);因为验证失败时 validateWithBag() 应该会自动重定向