Laravel 4验证已损坏

时间:2013-09-17 14:24:12

标签: php validation laravel laravel-4

简单的日期格式mm / dd / yyyy验证就是我所需要的......

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

我该如何设置日期格式? Laravel文档可以更好。

7 个答案:

答案 0 :(得分:12)

文档很清楚,你应该使用

<强> 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() );

给我打印

布尔值为真

答案 1 :(得分:6)

我遇到了类似的问题,但是使用了d / 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"',
    ...
之后,一切都很顺利。

答案 2 :(得分:4)

解决方法:

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

答案 3 :(得分:1)

您应该使用double quote,如"Y-m-d H:i:s"

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

在GitHub上讨论此问题: https://github.com/laravel/laravel/pull/1192

答案 4 :(得分:0)

date_format对我没用,所以我做了这个自定义验证

Validator::extend('customdate', function($attribute, $value, $parameters) {
  $parsed_date = date_parse_from_format ( "Y-m-d" , $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')
);

答案 5 :(得分:0)

使用PHP date_parse_from_format(Laravel 4):

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

您的验证邮件也会使用普通用户无法理解的"m/d/Y"生日与m / d / Y

格式不符

建议您针对此无效回复自定义邮件。 生日与格式mm / dd / yyyy

不符

答案 6 :(得分:0)

来源:点击Here

您可以使用

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