LaravelにおけるRequestクラスを使ったバリデーションの設定方法

初めに

今回は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クラスを扱うことによって、可読性の高いソースコードを記載することができるので、他の人にも読みやすいソースコードになるのではないでしょうか。

以上です。


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です