Laravel 表单验证

WBOY
發布: 2016-06-23 13:05:33
原創
1032 人瀏覽過

创建一个request验证文件

php artisan make:request ArticlesRequest     Request created successfully.
登入後複製

文件内容如下:

app/Http/Requests/ArticlesRequest.php< ?phpnamespace App\Http\Requests;use App\Http\Requests\Request;class ArticlesRequest extends Request{    /**     * Determine if the user is authorized to make this request.     *     * @return bool     */    public function authorize()    {        return true;   //这个是管理权限的,暂时先设置为true,全部权限可用    }    /**     * Get the validation rules that apply to the request.     *     * @return array     */    public function rules()    {        return [            'title'=>'required',  //这里是指定验证的项目,和验证的规则,以数组的方式编写            'content'=>'required'        ];    }}
登入後複製

验证规则参考官网: https://laravel.com/docs/5.2/validation

修改controller的store方法

app/Http/Requests/ArticlesRequest.phpuse App\Http\Requests\ArticlesRequest;//    public function store(Request $requests){    public function store(ArticlesRequest $requests){ //这里传入的是刚才创建的ArticlesRequest的实例        Articles::create($requests->all());        return redirect('/articles');    }
登入後複製

因为现在增加了验证,所以对store方法的进入的请求request都会进行过滤,但是直接过滤就不知道成功和失败了,所以要额外增加一个提示

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())  //增加这里,$errors变量是laravel提供的,就是捕获这些出错而保存的变量,是一个数组        <ul class="list-group">            @foreach($errors->all() as $error) //所以需要循环变量数组,获取最终报错信息                <li class="list-group-item list-group-item-danger">{{$error}}</li>            @endforeach        </ul>    @endif@stop
登入後複製

需要注意的是,在laravel 5.2里面,$errors变量需要在中间件web里面才会存在,如果不是的话,laravel会报错,Undefined variable: errors。

正常情况下,触发验证规则的报错弹出提示会在网页中显示,例如

The title field is required.The content field is required.
登入後複製

重写报错提示信息,例如改成中文提示,需要在request文件里面重写messages方法,文件内默认没有,所以我们需要添加

app/Http/Requests/ArticlesRequest.php    public function messages()    {        return [            'title.required' => '这个标题是必须的!', //例如这样就会匹配标题required的规则,然后触发你的提示            'body.required'  => '这个身体是必须的!',        ];    }
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!