Laravel输入数组为什么我在$ request-> quantity中得到null

问题描述 投票:0回答:2

在搜索类似的问题后,我仍然没有得到错误

问题是我有一个通常有效的表单,但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

所以,正如有时发生的那样,我想知道是否有些探险家做了一些奇怪的事情,将数量[]改为数量或无效或者什么,我在这里开车有点疯狂,我不能自己重现错误而且它不会等待错误发生在用户身上是个好主意(:

BTW当然我可以添加if($request->quantity)来避免错误,但这并不能解决为什么我有时会得到一个空的问题,休息很好。

按照dd($request->quantity);做的建议,我得到:

array:1 [
  0 => "1"
]

但同样,对我而言,它的工作效益不是10%。

php laravel
2个回答
0
投票

您可以通过检查数量来避免此错误。它

 if($request->quantity){
  if(count($request->quantity) == 0 || array_sum($request->quantity) < 1)){
   //message to select at least a quatity
  }
}

由于$request->quantity为null,因此抛出此错误;

希望这可以帮助


0
投票

由于您尚未标记Laravel的版本,因此我假设您使用的是最新版本。

为什么我得到一个null

检查验证规则..

当用户使用空字符串提交数据时,Laravel使其可以为空。检查位于ConvertEmptyStringsToNull文件夹内的中间件Illuminate\Foundation\Http\Middleware

因此,如果您希望在提交用户数据时始终存在,请将其设置为必需。

return [
    'quantity' => 'required',
    // .. other validation rules..
];

希望这可以帮助你。快乐的编码。干杯。

© www.soinside.com 2019 - 2024. All rights reserved.