Laravel 5.1。索引数组的验证

时间:2016-12-06 06:12:05

标签: php laravel validation laravel-5

我有输入表单,用户可以根据预订顺序选择项目详细信息的数量。例如:朱莉娅的预购:饮料 - 水1瓶,牛奶1杯,防弹咖啡1杯。

@foreach ($item->detail()->orderBy('sequence')->get() as $detail)
<td><input name="estimate_quantity[]"></td>
@endforeach

我想验证我的数量,只有大于零或等于它的整数。 所以我制定了规则

public function rules()
{
      $rules = [
          'estimate_quantity' => 'required|array',
      ];
      $estimate_quantity = $this->request->get('estimate_quantity');
      foreach ($estimate_quantity as $index => $value){
          $rules["estimate_quantity.$index"] = 'integer|min:0';
      }
      return $rules;
}

它不起作用。如果我输入了字母字符,那将是一个错误

ErrorException in helpers.php line 468:
htmlentities() expects parameter 1 to be string, array given

1.进行此验证的正确方法是什么?在控制器中制作它看起来不太好。

2.如果我将自定义规则放在单独的文件中,哪里更好地存储它?创建app / Validations文件夹?

3.规则执行后和控制器方法执行之前发生了什么神奇的事情?

我在Laravel和编程方面都很新,抱歉这个简单的问题。

1 个答案:

答案 0 :(得分:0)

我认为你可以给数组元素而不是.表示法使用下面的数组索引表示法应该可以工作

public function rules()
{
      $rules = [
          'estimate_quantity' => 'required|array',
      ];
      $estimate_quantity = $this->input('estimate_quantity');
      foreach ($estimate_quantity as $index => $value){
          $rules["estimate_quantity[".$index."]"] = 'integer|min:0';
      }
      return $rules;
}