ホームページ >バックエンド開発 >PHPチュートリアル >Laravelフォームの検証
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' ]; }}
検証ルールは公式Webサイトを参照: https://laravel.com/docs/5.2/validation
検証が追加されたので、ストア メソッドへのすべての受信リクエストがフィルタリングされますが、直接フィルタリングすると成功または失敗が分からないため、追加のプロンプトを追加する必要があります
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'); }
laravel 5.2 では、$ エラー変数がミドルウェア Web に存在する必要があることに注意してください。存在しない場合、laravel はエラー「未定義変数: エラー」を報告します。
通常の状況では、検証ルールをトリガーするエラー ポップアップ プロンプトが Web ページに表示されます (例:
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
中国語プロンプトに変更するなど、エラー プロンプト情報を書き換えるには、次のように書き換える必要があります)リクエスト ファイル内のメッセージ メソッドは、デフォルトではファイルに含まれていないため、
The title field is required.The content field is required.を追加する必要があります。