【问题标题】:How to validate laravel array with custom request?如何使用自定义请求验证 laravel 数组?
【发布时间】:2016-06-15 05:50:24
【问题描述】:

如何使用自定义请求进行验证,我的请求使用数组键

$request = [
  'link_inc_characteristic_id' => $inc_char_id[$i],
  'value' => $value[$i],
  'created_by' => $created_by,
  'last_updated_by' => $last_updated_by,
];

$this->validate($request, [
   'value['.$i.']' => 'max:30'
]);

$linkIncCharacteristicValue = LinkIncCharacteristicValue::create($request);
return Response::json($linkIncCharacteristicValue);

[编辑] [代码更新] 显示错误:

传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定数组,

【问题讨论】:

  • 你遇到了什么错误?
  • 验证不起作用并且没有错误.....输入值自动切割数据库字段长度,验证没有错误..
  • 我刚刚更新了代码.. 出现错误
  • 我认为,您存储的不是数组到 $request['value'] = $value[$i] 但您尝试验证 'value['.$i.']' => 'max: 30',如果你需要验证数组,你必须输入'value.*' => 'max:30'
  • 这是我在控制台上提交的数据,带有 ajax ; value[18] value[19] value[20] value[5] asasasaasshgafshgafshgafshgafsfafsasasasa value[7] value[8] value[9]

标签: php arrays validation laravel


【解决方案1】:

这是因为我将验证放在循环中,而不是使用 * 字符来验证数组

...
for ($i=0; $i < $count ; $i++) {
   ...
   $this->validate($request, [
      'value['.$i.']' => 'max:30'
   ]);
   ...
   // save etc
}

正确的代码,将验证放在循环之前,并使用 * 字符进行数组验证:

$this->validate($request, [
      'value.*' => 'max:30'
]);
...
for ($i=0; $i < $count ; $i++) {
   // save etc
}

【讨论】:

    【解决方案2】:

    Controller::validate() 不是通用验证方法,它验证请求。对于这个用例,直接使用验证器即可:

    Validator::make($data, ['value' => 'max:30']);
    

    【讨论】:

      【解决方案3】:

      错误信息告诉你出了什么问题:

      传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定数组

      所以将Request 实例传递给validate() 方法:

      public function store(Request $request)
      {
          $this->validate($request, [
              'value.*' => 'max:30',
          ]);
      }
      

      查看以下资源:

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 2017-06-01
        • 2017-12-06
        • 2017-11-17
        • 2020-12-10
        • 2019-10-07
        • 1970-01-01
        • 2019-12-31
        • 2021-02-15
        相关资源
        最近更新 更多