将两个输入验证为一个

时间:2016-08-10 19:15:30

标签: validation laravel laravel-4

我有两个单独的输入:datetime。我想使用after规则验证这两个输入。我该怎么做?以下是目前的规则:

$now = (new DateTime())->format('Y-m-d H:i');

$rules = [
    'date' => [
        'required',
        'date',
        "after:$now",
    ],
    'time' => [
        'required',
        'regex:/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/',
    ],
];

目前,验证是忽略时间,当时间设置为无效时,日期将会过去。

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

class MyRequest extends Request 
{
    public function rules() 
    {
        $this->normalize();

        return ['date_time' => 'required|date|after:now'];
    }

    public function normalize()
    {
        $this->merge([
            'date_time' => $this->input('date') . ' ' . $this->input('time')
        ]);
    }
}

这里最重要的是调用normalize来构建并向请求添加新的date_time键值,然后使用您喜欢的任何规则进行验证。