次のコラムでは、Laravel Tutorial コラムから FormRequest フォームバリデーターの URL の値を取得する方法を紹介します。困っている友達に!
私は最近ブログを始め、Laravel プロジェクトの開発仕様に従って「エレガントな」コードを書きました。
プロジェクトのルーティングはおそらく次のようになります
Route::get('/keywords','KeywordsController@index'); Route::get('/keywords/create','KeywordsController@create'); Route::post('/keywords/store','KeywordsController@store'); Route::delete('/keywords/{id}','KeywordsController@destory'); Route::get('/keywords/{id}/edit','KeywordsController@edit'); Route::put('/keywords/{id}','KeywordsController@update');
バリデーターはFormRequest基本クラスを使用して検証します。コードは次のとおりです
<?php namespace App\Http\Requests;use Illuminate\Validation\Rule;class KeywordRequest extends Request{ public function rules() { //$this->route('id') 获取url占位符为id的数据 switch ($this->method()) { case 'POST' : { return [ 'keyword' => 'required|unique:keywords' ]; } case 'PUT': case 'PATCH': { return [ 'keyword' => [ 'required', Rule::unique('keywords')->ignore($this->route('id')), ], ]; } case 'DELETE': case 'GET': default: { return []; } } } public function messages() { return [ 'keyword.required' => '关键字不能为空', 'id.required' => 'id不能为空', 'keyword.unique' => '关键字已存在,请重新填写' ]; }}
リクエストメソッドに従って検証が実行されます
規格を守るため、リクエストを更新する際にフォームにはIDを記載せず、URLのみに記載するようにしましたが、公式ドキュメントにもそのような方法が記載されています。
use Illuminate\Validation\Rule; Validator::make($data, [ 'email' => [ 'required', Rule::unique('users')->ignore($user->id), ],]);
しかし、この $user->id を取得する方法がわかりませんでした。ついに要件を満たす方法をオンラインで見つけました
$this->route('id')
以上がFormRequestフォームバリデータのURLの値を取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。