Edited at

Laravelの日時に関するバリデーション実例メモ


想定環境


  • Laravel5.5以降

  • 入力フォーム

    「開始日時」(start_datetime)

    「終了日時」(end_datetime)

    がある


実例

1・片方入力された場合はどちらも必須にする判定

public function rules()

{
  $rules = [
   'start_datetime' => 'nullable|required_with:end_datetime',
   'end_datetime' => 'nullable|required_with:start_datetime'
 ];
}

2・終了日が開始日の後であるか判定

public function rules()

{
 $rules = [
   'end_datetime' => 'after:start_datetime'
];
}

3・入力された内容が指定された形式か判定

public function rules()

{
 $rules = [
   'start_datetime' => 'date_format:"Y/m/d H:i:s"',
   'end_datetime' => 'date_format:"Y/m/d H:i:s"'
];
}

または下記を追加。

public function rules()

{
 $rules = [
   'start_datetime' => 'regex:/[0-9]+\/[0-9]+\/[0-9]+\s-\s[0-9]+\/[0-9]+\/[0-9]+/',
   'end_datetime' => 'regex:/[0-9]+\/[0-9]+\/[0-9]+\s-\s[0-9]+\/[0-9]+\/[0-9]+/'
];
}