【问题标题】:Laravel Array Element ValidationLaravel 数组元素验证
【发布时间】:2020-04-24 13:21:15
【问题描述】:

我想验证 audition_dates 字段在 shoot_dates 之前。

我知道我可以通过这些规则来验证数组:

public function store(Request $request)
{
    $validatedData = $request->validate([
      'shoot_dates' => 'array',
      'shoot_dates.*' => 'date',
      'audition_dates' => 'array',
      'audition_dates.*' => 'date'
    ]);

    // The request is valid...
}

我知道存在这些验证规则:

$rules = [
 'start_date' => 'after:tomorrow',
 'end_date' => 'after:start_date'
];

但我不知道如何在数组上实现它们。

【问题讨论】:

  • 你试过 Validator::make 吗?
  • 更新了问题。

标签: php laravel validation


【解决方案1】:

至于您的代码,也如Laravel Documentation中所述:

Validator::make($request->all(), $rules)->validate();

我们把它放在函数的开头。您可以在我提供的文档链接中阅读有关如何创建规则的更多信息。

要在某个日期之前进行验证,您必须去:

'audition_dates' =>'required|date|before:date'

日期必须根据strtotime,如果要对照其他字段,可能是:

'audition_dates' => 'required|date|before:shoot_dates'

【讨论】:

  • 我们可以在验证某些属性后执行操作,这是您要求的吗?此外,如果您希望在验证为假后停止执行,您可以这样做:'attribute' => ['bail', 'rule_as_you_know']
  • 这不是我要找的。我知道。我想要的是验证数组项是否在另一个项数组的日期之后。
  • 我想我现在得到了进一步的解释。我的评论并不是要侮辱你。我知道你知道很多事情 c:
  • 我忘了说我已经更新了我的答案,有用吗?
【解决方案2】:

我找到了解决办法。

[
  'audition_dates'   => 'required|array',
  'audition_dates.*' => 'date|after:tomorrow',
  'shoot_dates'      => 'required|array',
  'shoot_dates.*'    => 'date|after:audition_dates.*',
];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 2016-08-30
    • 2019-02-23
    • 1970-01-01
    • 2023-03-10
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多