【问题标题】:Laravel 5 validation append to ruleLaravel 5 验证附加到规则
【发布时间】:2018-04-18 13:02:39
【问题描述】:

我使用的是 Laravel 5.4,我有 2 个日期字段。第一个是必需的,第二个是可选的。

当第二个日期字段为空时,我遇到了验证问题。

我明白为什么但只想在第二个日期不为空时运行before_or_equal 规则

$this->validate($request, [
    'start_date' => 'required|date|before_or_equal:end_date',
    'end_date' => 'nullable|bail|date|after_or_equal:start_date',
]);

如果日期字段为空,我如何更新我的代码忽略规则?

我确实想过这个

if($request->has('end_date')) {
    //do something
}

唯一的其他选择是创建自定义验证规则并比较日期

【问题讨论】:

  • 您为什么不使用php artisan make:request FormRequest 并将它们放在自己的文件中?
  • 我不这么认为他在使用 FormRequest。

标签: laravel validation


【解决方案1】:

我会这样做:

$rules = [
    'start_date' => 'required|date|before_or_equal:end_date',
];

if ($request->get('end_date') != '') {
    $rules['end_date'] = 'required|date|after_or_equal:start_date';
}

$this->validate($request, $rules); 

【讨论】:

  • 有道理,它完成了工作
【解决方案2】:

无需将这两个条件都从start_date 中删除|before_or_equal:end_date。只有after_or_equal:start_date 可以工作

使用required_with:foo,bar,...

这样试试

$this->validate($request, [
    'start_date' => 'required|date',
    'end_date' => 'required_with:start_date|nullable|bail|date|after_or_equal:start_date',
]);

【讨论】:

  • 我发表了评论,但您的回答更有意义。
猜你喜欢
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2015-01-26
  • 1970-01-01
  • 2020-12-29
相关资源
最近更新 更多