Laravel在今天之前统治......怎么做

时间:2014-12-23 16:46:29

标签: php laravel

对于此规则,我收到错误syntax error, unexpected '.', expecting ')'

public static $rules = array(
    'first_name' => 'required|alpha-dash',
    'last_name' => ' required|alpha-dash',
    'media_release' => 'required|boolean',
    'birthday' => 'before:' . date('Y-m-d')

);

我无法弄清楚为什么这不会起作用。我正在运行Laravel 4.2.12

4 个答案:

答案 0 :(得分:17)

试试这个:

'birthday' => 'date_format:Y-m-d|before:today',

再见

答案 1 :(得分:12)

仅供未来用户使用:

Laravel 5使用表单请求:

'birthday' => 'before:today',    // Doesn't accept today date
'birthday' => 'before:tomorrow', // Accept today date

答案 2 :(得分:4)

定义类成员变量时不能使用函数。您必须将该部分移动到构造函数中:

<?php
class Foo {
    public static $rules = array(
        'first_name' => 'required|alpha-dash',
        'last_name' => ' required|alpha-dash',
        'media_release' => 'required|boolean'
    );
    public function __construct()
    {
        self::$rules['birthday'] = 'before:' . date('Y-m-d');
    }

修改

上述解决方案可能无法在Laravel中使用。您可能不得不使用“自定义验证器”:

http://laravel.com/docs/4.2/validation#custom-validation-rules

<强>更新

看起来Laravel 5引入了更好的解决方案。请参阅Fernando的答案,如下所示。

答案 3 :(得分:1)

我建议您为生日添加beforeafter声明。

'birthday' => date_format:Y-m-d|before:today|after:1900-01-01

你会避免像1111-1-1这样的条目,因为1900年以后没有人活着。