例えば、以下のような’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のインデックスに一意となるキーを指定しておけば、エラーとなったテキストボックスにエラーメッセージを表示させることが出来る。