【问题标题】:Laravel L5 complex validation of array dataLaravel L5 数组数据的复杂验证
【发布时间】:2018-07-03 21:37:28
【问题描述】:

在我的应用程序中,有一个可以(理论上)具有无限 task 的表单,我想在我的 Request 中定义一个验证规则,以检查它们之间没有一个是相等的:

发件人:

<select name="task[1][id][]" class="form-control">

..

<select name="task[2][id][]" class="form-control">

..
..

<select name="task[n][id][]" class="form-control">

由于我对 Laravel 验证还不够熟悉,所以我很天真并尝试了以下方法:

'task[1][id][]' => 'different:task[2][id][]', 'task[2][id][]' => 'different:task[1][id][]'

或:

'task[1][id][*]' => 'different:task[2][id][*]', 'task[2][id][*]' => 'different:task[1][id][*]'

或:

'task[*][id][*]' => 'different:task[*][id][*]'

我没有收到任何错误,但验证总是通过。我很确定,有一个好方法可以让这个东西运行起来,但我认为我走错了路..

编辑:(根据要求提供其他信息)

<select name="task[1][id][]" class="form-control">
      <option value="">&nbsp;</option>
      @foreach ($users as $user)
          <option value="{{ $user->id }}">{{ $user->email }}</option>
      @endforeach
</select>

<select name="task[2][id][]" class="form-control">
      <option value="">&nbsp;</option>
      @foreach($users as $user)
         <option value="{{ $user->id }}">{{ $user->email }}</option>
       @endforeach
</select>

目前,我使用的是“硬编码”&lt;select&gt;。没什么特别的……

【问题讨论】:

    标签: arrays laravel validation laravel-5


    【解决方案1】:

    使用distinct

    $rules = [
      'task.*.id.*'=>'distinct'
    ]
    

    【讨论】:

    • 'task.*'=&gt;'distinct''task.id.*' =&gt; 'distinct' 也不起作用。
    • 显示您的视图代码,您的选择表单代码,这应该适用于数组
    • 显示你的真实视图代码,比如用foreach生成选择字段,或者你可以dd($request)给我们看
    • 很抱歉再次打扰您,但还有最后一件事:我怎么能忽略“空”ìd`?
    • 添加这个nullable|distinct
    猜你喜欢
    • 2020-09-06
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多