Ошибка проверки Laravel 4

Простой формат даты mm / dd / yyyy – это все, что мне нужно …

$rules = array( 'renewal_date' => array('required', 'date_format:?') ); 

Для чего я устанавливаю формат даты? Документация Laravel может быть намного лучше.

Solutions Collecting From Web of "Ошибка проверки Laravel 4"

Документация для меня довольно понятна, вы должны использовать

date_format: формат

«Поле под проверкой должно соответствовать формату, определенному в соответствии с функцией date_parse_from_format PHP».

Глядя на это: http://php.net/manual/en/function.date-parse-from-format.php , я вижу, вы можете сделать что-то вроде этого:

 $rules = array( 'renewal_date' => array('required', 'date_format:"m/d/Y"') ); 

Это чистый PHP-тест:

 print_r(date_parse_from_format("m/d/Y", "04/01/2013")); 

Вы также можете сделать это вручную в Laravel для тестирования:

 $v = Validator::make(['date' => '09/26/13'], ['date' => 'date_format:"m/d/Y"']); var_dump( $v->passes() ); 

Мне это печатает

boolean true

У меня есть аналогичная проблема, но с форматом даты ad / m / Y. В моем случае проблема заключалась в том, что я определил правила «date» и «date_format» для одного и того же поля:

 public static $rules = array( 'birthday' => 'required|date|date_format:"d/m/Y"', ... 

Решение состоит в том, чтобы удалить валидатор «даты»: вы не должны использовать оба . Как это:

 public static $rules = array( 'birthday' => 'required|date_format:"d/m/Y"', ... 

после этого все хорошо.

Временное решение:

 'renewal_date' => array('required', 'date_format:m/d/Y', 'regex:/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/') 

Вы должны использовать с double quote например, "Ymd H:i:s"

 $rules = array( 'renewal_date' => array('required', 'date_format:"m/d/Y"') ^ ^ this ones ); 

Обсуждение этой проблемы на GitHub: https://github.com/laravel/laravel/pull/1192

date_format не работал для меня, поэтому я сделал эту обычную проверку

 Validator::extend('customdate', function($attribute, $value, $parameters) { $parsed_date = date_parse_from_format ( "Ymd" , $value); $year = $parsed_date['year']; $month = $parsed_date['month']; $month = $month <= 9 ? "0" . $month : $month; $day = $parsed_date['day']; $day = $day <= 9 ? "0" . $day : $day; return checkdate($month, $day, $year); }); $validation = Validator::make( array('date' => $num), array('date' => 'customdate') ); 

Используйте PHP date_parse_from_format (Laravel 4):

 'birthday' => 'date_format:m/d/Y' 

В вашем валидационном сообщении также будет использоваться "m/d/Y" который средний пользователь не поймет. День рождения не соответствует формату m / d / Y

Рекомендуем настроить ваше сообщение для этого недействительного ответа. День рождения не соответствует формату mm / dd / yyyy

Источник: Нажмите здесь

Вы можете использовать как

 $rules = [ 'start_date' => 'date_format:d/m/Y|after:tomorrow', 'end_date' => 'date_format:d/m/Y|after:start_date', ];