質問: 0; $i < 10; $i++) @endfor ``` FormRequest ``` public function rules() { return [ 'start_time' => 'required|array|min:1|', 'start_time.*' => 'nullable|date_format:H:i|', 'end_time' => 'required|array|min:1', 'end_time.*' => 'required_with:start_time.*|date_format:H:i|after:start_time.*', 'sum_time' => 'required|array|min:1|', 'sum_time.*' => 'required_with:start_time.*|date_format:H:i|', ]; } ``` ### 試したこと バリデーションがかかる前に、`array_filter`でnullを削除しようとしましたが、全部からだとエラーが出てうまくできていません。 大変申し訳ありませんが、お力を貸していただけますと助かります。 初めての質問で不備等ありましたら追記しますので、宜しくお願い致します。
回答: start_timeとend_timeをについて、 ・1行目が必須 ・2行目以降は、start_timeがあれば、end_timeも なら下記でいけるはず・・。 ``` 'start_time.0' => 'required', 'end_time.0' => 'required', 'start_time.*' => 'nullable|date_format:H:i', 'end_time.*' => 'required_with:start_time.*|nullable|date_format:H:i|after:start_time.*', ``` 提示のbladeを見る限り、inputのnameが配列形式(***[])なので、1行目の必須は「0」指定で書いてしまいます。 なお、「0」もそれ以外「.*」も共通でチェックしたいもの(時間の形式など)は、 「.*」の方に書いておけば「0」もチェックされるので、「0」はrequiredのみで問題ないとおもいます。(※) (※)動作確認をlaravel6.0で行ったので、もし挙動が違った場合はすみません^^; それと、質問の本筋とは関係ありませんが、 nullを許容する可能性のある項目には、全て`nullable`も並記しておいた方が良いですよ。 質問に提示されたコードより、下記のルールを例にあげますと、 ``` 'sum_time.*' => 'required_with:start_time.*|date_format:H:i|', ``` sun_time[1]を、空のまま送信したとします。 start_time[1]がなければ、`required_with`のバリデーションチェックは通りますが、`nullable`が設定されていない為、次の`date_format`が空の送信値nullに対して実行され、バリデーションエラーになってしまいます。 以上、ご参考までに・・。