ハッピーメモメモ

私的備忘録

【LARAVEL】バリデーション

バリデーションの使用例

入力された値をコントローラ内でチェックする処理。

failsメソッドの実行タイミングでバリデーションが行われる。

class UserController extends Controller
{
    public function register(Request $request)
    {
        // すべての入力値を取得し$inputsに保持する…➀
        $inputs = $request->all();

        // バリデーションルールを定義する…➁
        $rules = [
            'name' => 'required',
            'age' => 'integer',
        ];

        // ➀と➁をValidatorファサードのmakeメソッドに渡し、
        // $validatorインスタンスを取得
        $validator = Validator::make($inputs,$rules);

        if($validator->fails()){
            // 値エラーの場合の処理
        }
            // 値が正常だった場合の処理
    }
}

 

複数のルールを指定する方法

2通りのやり方がある

        $rules = [
            // 配列で指定
            'email' => ['required','email'],
            // パイプラインで区切る
            'age' => 'required|integer',
        ];

 

ほかの対象と比較するルール

複数のフィールドを比較

 confirmed…確認済の

        $rules = [
            // emailとemail_confirmedが同値であることを確認
            'email' => 'confirmed',
      ];

uniqueルールの指定

        $rules = [
            // usersテーブルの同名カラムと、
        入力フィールドの値を比較して重複しないことを確認
            //  …キー値が表す入力フィールド(name)と同名のカラムを
            //   対象とするときは、テーブル名だけを指定する
            'name' => 'unique:users',
           
            // usersテーブルのemailカラムと、
        mailフィールドの値を比較して重複しないことを確認
            //  …入力フィールドとは異なるカラム名と比較する場合は、
            //   追加でカラム名を指定する
            'mail' => 'unique:users,email',

            // 上記と同じルールだが、idが100のレコードは重複を許可する
            'mail' => 'unique:users,email,100',
        ];

 

バリデーション失敗時の処理

・Laravelでは、バリデーションチェックの結果はMessageBagオブジェクト(Illuminate\Support\MessageBagクラスのインスタンス)で保持されている。

・ビューでは常に$errors(MessageBagインスタンス)が用意されている。

 

ルールのカスタマイズ

・ルールの追加

Validatorクラスのextendメソッド

・特定の条件のみルールを追加

Validatorクラスのsometimesメソッド

 

 

参照:

www.socym.co.jp