我有输入表单,用户可以根据预订顺序选择项目详细信息的数量。例如:朱莉娅的预购:饮料 - 水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和编程方面都很新,抱歉这个简单的问题。
答案 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;
}