Laravel カスタムバリデーションに配列を渡す方法

例えば、以下のような’hh:mm’形式で時刻を入力してもらうテキストボックスの’times[]’という配列があるとして
1つ1つのテキストボックスに’hh:mm’形式、かつ’06:00’~’11:59’の範囲に入っているかのカスタムバリデーションを作成し’times[]’全てを一気にチェックしてもらう方法

XxxxRuleという’hh:mm’形式、かつ’06:00’~’11:59’のカスタムバリデーションを作成する。
※カスタムバリデーションの作り方は省略

リクエストクラスに以下のように記述すれば、XxxxRuleに配列全てをチェックしてもらうことが出来る。

    public function rules()
    {
        return [
            'times.*' => [				// これだけで配列全てチェックしてくれる
                new XxxxRule,
            ]
        ];
    }

エラーメッセージを独自のものにしたい場合、XxxxRule.phpに以下を追記すればOK

    public function message()
    {
        return '06:00~11:59の形式で入力して下さい';
    }

timesのインデックスに一意となるキーを指定しておけば、エラーとなったテキストボックスにエラーメッセージを表示させることが出来る。

返信を残す

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