创建一个request验证文件
1 | php artisan make:request ArticlesRequest Request created successfully.
|
Copy after login
文件内容如下:
1 | app/Http/Requests/ArticlesRequest.php< ?phpnamespace App\Http\Requests; use App\Http\Requests\Request; class ArticlesRequest extends Request{ public function authorize() { return true;
|
Copy after login
验证规则参考官网: https://laravel.com/docs/5.2/validation
修改controller的store方法
1 | app/Http/Requests/ArticlesRequest.phpuse App\Http\Requests\ArticlesRequest;
|
Copy after login
因为现在增加了验证,所以对store方法的进入的请求request都会进行过滤,但是直接过滤就不知道成功和失败了,所以要额外增加一个提示
1 | resources/views/articles/create.blade.php@ extends ( 'layout.app' )@section( 'content' ) <h1>创建文章</h1> {!! Form::open([ 'url' => '/articles/store' ]) !!} <!--- Title Field ---> <div class = "form-group" > {!! Form::label( 'title' , 'Title:' ) !!} {!! Form::text( 'title' , null, [ 'class' => 'form-control' ]) !!} </div> <!--- Content Field ---> <div class = "form-group" > {!! Form::label( 'content' , 'Content:' ) !!} {!! Form::textarea( 'content' , null, [ 'class' => 'form-control' ]) !!} </div> <!--- Field ---> <div class = "form-group" > {!! Form::label( 'publish_at' , 'publish_at:' ) !!} {!! Form:: date ( 'publish_at' , date ( 'Y-m-d' ), [ 'class' => 'form-control' ]) !!} </div> {!! Form::submit( '发表文章' ,[ 'class' => 'btn btn-primary form-control' ]) !!} {!! Form::close() !!} @ if ( $errors ->any())
|
Copy after login
需要注意的是,在laravel 5.2里面,$errors变量需要在中间件web里面才会存在,如果不是的话,laravel会报错,Undefined variable: errors。
正常情况下,触发验证规则的报错弹出提示会在网页中显示,例如
1 | The title field is required.The content field is required.
|
Copy after login
重写报错提示信息,例如改成中文提示,需要在request文件里面重写messages方法,文件内默认没有,所以我们需要添加
1 | app/Http/Requests/ArticlesRequest.php public function messages() { return [ 'title.required' => '这个标题是必须的!' ,
|
Copy after login