laravel表单验证错误

时间:2018-12-09 09:14:15

标签: laravel validation

版本: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方法。如何修改它?

3 个答案:

答案 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