在搜索类似问题后,我仍然没有收到错误
问题是我有一个通常有效的表单,但10%的用户有此错误
array_sum()期望参数1为数组,给定
为null
表格
<select name="quantity[]" class="form-control option-quantity" data-price="100">
<option data-price="100" value="0">0</option>
<option data-price="101" value="1" selected="selected">1</option>
<option data-price="102" value="2">2</option>
</select>
控制器
$validator = Validator::make($request->all(), [
'quantity.*' => 'required|integer',
]);
if ($validator->fails()) {
abort(500);
}
if(count($request->quantity) == 0 || array_sum($request->quantity) < 1)){
//message to select at least a quatity
}
他们总是提出一个数额,因为我没有限制,js避免空值或0和服务器端不允许0
所以,正如有时候发生的那样,我想知道一些探险家是否做了一些奇怪的事情,将数量[]改为数量或无效或某事,我在这里开车有点疯狂我可以&#39 ; t自己重现错误,等待错误发生在用户身上不是一个好主意(:
当然,顺便说一句,我可以添加if($request->quantity)
以避免错误,但这并不能解决为什么我有时会得到一个空的问题,休息就好了。
按照dd($request->quantity);
后的建议,我得到:
array:1 [
0 => "1"
]
但同样,对我而言,它的工作效益不是10%。
答案 0 :(得分:0)
您可以通过检查数量来避免此错误。它
if($request->quantity){
if(count($request->quantity) == 0 || array_sum($request->quantity) < 1)){
//message to select at least a quatity
}
}
抛出此错误是因为$request->quantity
为空;
希望这有帮助
答案 1 :(得分:0)
由于您尚未标记Laravel版本,因此我假设您使用的是最新版本。
为什么我得到一个空
检查验证规则..
当用户使用空字符串提交数据时,Laravel使其可以为空。检查位于ConvertEmptyStringsToNull
文件夹内的中间件Illuminate\Foundation\Http\Middleware
。
因此,如果您希望在提交用户数据时始终存在,请将其设置为必填项。
return [
'quantity' => 'required',
// .. other validation rules..
];
希望这会帮助你。快乐的编码。欢呼声。
答案 2 :(得分:0)
尝试从所选名称中删除“ []”,因此您将获得以下信息:
<select name="quantity" class="form-control option-quantity" data-price="100">
<option data-price="100" value="0">0</option>
<option data-price="101" value="1" selected="selected">1</option>
<option data-price="102" value="2">2</option>
</select>