初めに
今回はLaravelでバリデーションを設定する際にRequestクラスを使って、バリデーションを設定する方法をご紹介したいと思います。
Controllerクラスに直接バリデーションを設定することもできますが、Requestクラスにてバリデーションを作成し、分けることによって以下のようなメリットがあります。
メリット
- コントローラから処理を分離することによって可読性が上がる
- 保守性が上がる
- 他のクラスでも使える
それでは実際に作成していきます。
Requestクラス作成
下記コマンドを実行します。
php artisan make:request クラスに付与する名前
コマンドを実行するとこのようなクラスが作成されます。
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class クラス名 extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return false; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // ]; } }
まずは作成したRequestクラスのauthorizeメソッドの戻り値をfalseからtrueに変更します。
trueにすることでバリデーションがきくようになります。
public function authorize() { return true; }
次にバリデーションの種類を定義するために必要なrulesメソッドを編集します。
public function rules() { return [ 'name' => 'required', // バリデーションを設定する項目及びバリデーションの種類を設定 'password' => 'required', ]; }
設定可能なバリデーションの種類については下記URLをご参照ください。
https://readouble.com/laravel/5.7/ja/validation.html
messagesメソッドを加えることによって独自のエラーメッセージを設定することも可能です。
public function messages() { return [ 'name.require' => 'ユーザ名は必須項目です', ]; }
まとめ
Requestクラスを扱うことによって、可読性の高いソースコードを記載することができるので、他の人にも読みやすいソースコードになるのではないでしょうか。
以上です。