【问题标题】:validate all arrayitems except last in laravel在 laravel 中验证除最后一个之外的所有数组项
【发布时间】:2018-07-10 15:16:08
【问题描述】:

使用星号,我可以验证所有数组项,如下所示:

'event_time_start.*' => 'required|date_format:G:i',

但我想将此验证规则应用于所有项目,最后一项除外。我怎样才能做到这一点?

【问题讨论】:

  • 数组的大小是常量还是变量?
  • 它是可变的。
  • 你能解释一下忽略数组最后一个元素验证的原因吗:D
  • 在界面中,用户可以新建一行。为了完成这一点,我隐藏了最后一行,并克隆了这一行。但是隐藏行的输入也是发送的,所以我需要在去验证时跳过这个。
  • 那么,空值作为数组中的输入,对吗?

标签: php laravel validation laravel-5


【解决方案1】:

如果可能,始终建议从前端排除不必要的项目。如果没有,您可以在将请求数据发送到 Validator 之前删除最后一项。

    $requestData = $request->all();
    $count = count($requestData["event_time_start"]);
    unset($requestData["event_time_start"][$count-1]);
    $validator = Validator::make( $requestData  , [
        'event_time_start.*' => 'required',
    ]);

【讨论】:

    【解决方案2】:

    在您的 JavaScript 中,当用户单击添加时,您将克隆一个空的隐藏行。我的解决方案是在该字段上没有 name 属性,因此它永远不会发布到服务器。克隆行时,将name="event_time_start[]" 属性添加到新克隆的行。

    这将保留带宽并允许您不需要 squirrelly 验证器异常,这在 6 个月后的代码中读起来会很奇怪。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 2021-11-03
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多