版本:laravel 5.7
路由器:
Route::get('regist','User\RegistController@registView');
Route::post('regist','User\RegistController@regist');
表格:
<form class="form-signin" method="POST" action="/regist">
.....
</form>
验证:
$this->validator=Validator::make($input,$rule,$message);
if($this->validator->fails()){
return \Redirect::back()->withErrors($this->err());
}
问题:
不显示错误消息。需要在地址栏中按Enter键以重新加载页面。要使用Validateor :: make方法。如何修改它?
答案 0 :(得分:0)
如果验证有效,您是否将错误消息显示在重定向到的页面上?
例如在您的刀片服务器页面中,您是否做了以下类似的事情?
@if(count($errors->all()) > 0)
<div class="alert alert-danger" role="alert">
<p><b>Required Fields Missing!</b></p>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
如果您在控制器中,请使用验证程序Facade。
use Illuminate\Support\Facades\Validator;
在控制台用户中,以下代码
public function update(Request $request, $id) //use of request
{
$this->validate($request, [
'name' => 'required',
], [
'name.required' => 'Name is required',
]);
}
如果验证失败,它将自动重定向回去,或者您可以使用验证器fail语句并发送修改后的消息。
之后,您应该放置一条if语句以显示错误消息,如下所示:
@if(count($errors->all()) > 0)
<div class="alert alert-danger" role="alert">
<p><b>Required Fields Missing!</b></p>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
或者如果您仅定义了一条错误消息,请使用:
@if(Session::has('success'))
<div class="alert alert-success" role="alert">
{ Session::get('success') }}
</div>
@endif
希望这会有所帮助
答案 1 :(得分:0)
要在表单上添加验证,可以使用Laravel请求验证类。这将帮助您在单独的类中进行验证。
以下是请求类的参考:-https://laravel.com/docs/5.7/validation#form-request-validation
这将帮助您进行验证以及代码的改进。
答案 2 :(得分:0)
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif