laravel 5.1 中的日期验证
Posted
技术标签:
【中文标题】laravel 5.1 中的日期验证【英文标题】:Date validation in laravel 5.1 【发布时间】:2018-10-29 10:14:46 【问题描述】:我已经为验证输入创建了名为 EventRequest 的自定义请求。我有两个日期属性,第一个是“开始”,第二个是“结束”。 'End' 必须大于或 等于 才能开始。 注意:laravel 5.1 没有 after_or_equal 函数
这是我的代码
public function rules()
return [
'name' =>'required|min:3|max:255',
'place' => 'required|min:3|max:255',
'start_date' => 'required|date|after:yesterday',
'end_date' => 'required|date|after:yesterday',
'start_time' => 'required|date_format:H:i',
'end_time' => 'required|date_format:H:i'
];
如果我设置了一条规则,例如 start_date 必须是 before:end_date 但如果它们在同一天,则会引发错误。有什么解决方案吗? 提前致谢!
【问题讨论】:
Laravel 5.3 date validator: equal to or after start_date 的可能重复项。简短的回答是after_or_equal
是你想要的规则
@Ohgodwhy:它在 5.1 中可用吗?我认为不是
您需要使用手动Validator
来进行这样的验证。
after_or_equal 在 laravel5.1 中不可用
你解决了吗?
【参考方案1】:
开始日期在:昨天之后...所以 end_date 可以在 start_date 之后...
public function rules()
return [
'name' =>'required|min:3|max:255',
'place' => 'required|min:3|max:255',
'start_date' => 'required|date|after:yesterday',
'end_date' => 'required|date|after:start_date',
'start_time' => 'required|date_format:H:i',
'end_time' => 'required|date_format:H:i'
];
【讨论】:
after:yesterday
表示今天,after:start_date
表示tomorrow
,不检查同一日期【参考方案2】:
手动使用Validator
的解决方案
public function validateForm(Request $request)
$end_date = date('Y-m-d', strtotime($request->end_date. ' -1 day' ));
$messages = [
"end_date.after" => "End date must be equal or greater than start date.",
];
$rules = [
'start_date' => 'required|date|after:yesterday',
'end_date' => 'required|date|after:'.$end_date,
];
return Validator::make($requestAll, $rules);
【讨论】:
以上是关于laravel 5.1 中的日期验证的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Laravel 5.1 中的表而不是“用户”表中对用户进行身份验证?
我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?