[PHP][Laravel][バリデーション] 開始と終了の日付バリデーション処理
概要
開始日と終了日のテキストボックスがある。
それぞれ必須入力ではなく、指定可能期間は本日〜1ヶ月後とする。
開始日が指定された場合のみ、「開始日 <= 終了日」の条件が発生。
コード
public function rules() { $today = date("Y-m-d"); $nextmonth = date("Y-m-d", strtotime("1 month")); return [ 'date_start_at' => 'nullable|date|after_or_equal:' . $today . '|before:' . $nextmonth, 'date_end_at' => 'nullable|date|after_or_equal:' . $today . '|before:' . $nextmonth, ]; }
「after_or_equal:today」等にするとエラーメッセージが分かり難くなるので具体的な日付を指定している。
「開始日 <= 終了日」の条件をsometimesメソッドで行う。
public function withValidator(Validator $validator) { $validator->sometimes('date_end_at', 'after_or_equal:date_start_at', function ($input) { return !is_null($input->date_start_at); }); }
date_start_atが指定された場合のみsometimesの第一引数(date_end_at)を対象に第二引数の条件をバリデーションする。
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2017/09/16
- メディア: 単行本
- この商品を含むブログを見る