基于两个独立输入的Laravel日期验证;日期输入和时间输入

问题描述 投票:0回答:1

我想根据日期的日期选择器输入和当时的单独时间选择器输入验证Laravel中的表单日期:

<input class="form-control datepicker" name="datepicker_date">
<input class="form-control timepicker" name="datepicker_time">

处理所有工作正常,这是Laravel验证规则:

'datepicker_date' => 'required|date|after:' . date('Y-m-d H:i', time()),
'datepicker_time' => 'required|date_format:H:i',

这是有效的,因为它检查给定的日期是在当前时间之后(并且由于没有提供时间,所以检查的时间将是00:00:00')。

我需要将timepicker字段作为验证规则的一部分考虑在内,因此如果他们选择了15:00,则验证日期为2018/09/09 15:00:00。目前是2018/09/09 00:00:00。

如何将已选择的时间注入“datepicker_date”输入或将datepicker_time字段视为datepicker_date验证规则的一部分?


感谢您的帮助MücahitCücen。这就是我现在拥有的:

 $this->request->add([
        'datetime' => date('Y-m-d H:i:s', strtotime($this->request->get('datepicker_date') . ' ' . $this->request->get('datepicker_time')))
    ]);

 'datepicker_date' => 'required|date',
 'datepicker_time' => 'required|date_format:H:i',
 'datetime' => 'required|date|after:' . date('Y-m-d H:i', time()),

我收到错误'日期时间字段是必需的'。虽然。它被添加到集合中,因为我有dd()'d并且可以看到它,但验证器没有把它拿起来?我试过使用request-> merge函数并得到一个函数不存在错误?


更新:好吧,这很hacky但我设法通过添加。来解决这个问题

   $this->request->add([
        'datetime' => date('Y-m-d H:i:s', strtotime($this->request->get('datepicker_date') . ' ' . $this->request->get('datepicker_time')))
    ]);

参与authorize()函数,可能是因为它在rules()函数之前调用,因此添加了新的请求参数。任何更好的建议欢迎:)

php html laravel laravel-5.6
1个回答
1
投票

你可以试试这个。

在验证代码之前:

$request->merge([
    'datepicker' => $request->get('datepicker_date').' '.$request->get('datepicker_time'),
]);

你可以像这样验证它,

'datepicker' => 'required|date|after:' . date('Y-m-d H:i', time())

我没试过,但这可以解决你的问题。

编辑:请求 - >所有输出;

"datepicker_date" => "2018-09-14"
"datepicker_time" => "12:26"
"datepicker" => "2018-09-14 12:26"
© www.soinside.com 2019 - 2024. All rights reserved.