人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel8 で 独自のバリデーション ルールを作成する

● Laravel8 で 独自のバリデーション ルールを作成する

大きく分けると次の2つの方法があります

● 1. サービスプロバイダーを使用する方法 (おすすめです)
● 2. バリデーションルールを使用する方法

● 1-1. (サービスプロバイダ) バリデーションサービスプロバイダーの自動作成

php artisan make:provider ValidatorServiceProvider

app/Providers/ValidatorServiceProvider.php が自動生成されます

● 1-2. (サービスプロバイダ) ValidatorServiceProvider.php の boot メソッドにルールを記述

    public function boot()
    {
        \Validator::extend(
            'mytext',
            function ($attribute, $value, $parameters, $validator) {
                return preg_match('/^[0-9]{3}-?[0-9]{4}$/', $value);
            }
        );
    }

● 1-2. (サービスプロバイダ) config/app.php の 'providers' => [] に 作成した ValidatorServiceProvider.php を登録

config/app.php

/*
* Application Service Providers...
*/
App\Providers\ValidatorServiceProvider::class,

これだけでOKです!



● 2-1. (バリデーションルール) カスタムバリデーションルールファイルの自動作成

 php artisan make:rule Hankaku  

app/Rules/Hankaku.php が自動作成されます

● 2-2. (バリデーションルール) passes() メソッドにバリデーションが成功となる条件を記述する

バリデーションがOKの時に true を返すように記述します

    public function passes($attribute, $value)
    {
        return preg_match('/^[a-zA-Z0-9]+$/', $value);
    }

● 2-3. (バリデーションルール) message() メソッドにエラーメッセージを記述する

  public function message()
  {
    return ':attribute は半角英数字で入力してください';
  }

● 2-4. (バリデーションルール) 使用する

formRequest.php

public function rules(): array
    {
        return [
            'zipcode' => ['required', new Hankaku],
        ];
    }

配列で記述します。パイプ記法では使用できないみたい?

No.2042
09/17 14:16

edit