php - 基于两个独立输入的 Laravel 日期验证;日期输入和时间输入
问题描述
我想根据日期的日期选择器输入和单独的时间选择器输入来验证 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ücahit Cü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() 函数之前被调用,因此添加了新的请求参数。欢迎任何更好的建议:)
解决方案
你可以试试这个。
在您的验证码之前:
$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"
推荐阅读
- r - 是否可以使用 actionButton 清除 ShinyApp 中显示的输出
- html - 修复独立于目录的 URL
- ruby-on-rails - Rails 6 所有 validate_presence_of 测试均失败
- python - 如何使用 Python 获取实时公共交通时间?
- java - 如何表示一个空的/无效的 java.nio.Path
- database - 如何在 mongoDB 中查找数组
- java - 将值从一个非静态方法传递到另一个从main?
- java - “应用程序启动方法 java.lang.reflect.InvocationTargetException 中的异常”
- c++ - 如何在其中初始化类的数组实例?
- java - 如何避免“接口抽象类错误”?