Laravel 表單驗證

來源:互聯網
上載者:User

建立一個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')    

建立文章

{!! Form::open(['url'=>'/articles/store']) !!} {!! Form::label('title', 'Title:') !!} {!! Form::text('title', null, ['class' => 'form-control']) !!} {!! Form::label('content', 'Content:') !!} {!! Form::textarea('content', null, ['class' => 'form-control']) !!} {!! Form::label('publish_at', 'publish_at:') !!} {!! Form::date('publish_at', date('Y-m-d'), ['class' => 'form-control']) !!} {!! Form::submit('發表文章',['class'=>'btn btn-primary form-control']) !!} {!! Form::close() !!} @if($errors->any()) //增加這裡,$errors變數是laravel提供的,就是捕獲這些出錯而儲存的變數,是一個數組
    @foreach($errors->all() as $error) //所以需要迴圈變數數組,擷取最終報錯資訊
  • {{$error}}
  • @endforeach
@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'  => '這個身體是必須的!',        ];    }
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.