Laravel中如何实现两个数组的索引配对输入验证?
Laravel中按索引配对数组的表单验证实现
我有一个带验证规则的表单请求,初始代码如下:
return [ 'brand_id' => ['required', 'integer'], 'color_id' => ['required', 'integer'], 'name' => ['required', 'max:255', 'string'], 'capital' => ['required', 'string'], 'price' => ['required', 'string'], 'size' => ['required', 'string', 'max:255'], 'incoming.*' => ['required', 'integer', 'gte:outgoing.0'], ];
我希望按各自的索引对incoming和outgoing两个数组进行配对验证——也就是让incoming[0]大于等于outgoing[0]、incoming[1]大于等于outgoing[1],以此类推,请问在Laravel中能实现这种需求吗?
最终我采用了以下实现方式:
foreach ($this->incoming as $key => $value) { $incoming["incoming.{$key}"] = ['required', 'integer', "gte:outgoing.{$key}"]; } return array_merge([ 'brand_id' => ['required', 'integer'], 'color_id' => ['required', 'integer'], 'name' => ['required', 'max:255', 'string'], 'capital' => ['required', 'string'], 'price' => ['required', 'string'], 'size' => ['required', 'string', 'max:255'], ], $incoming);
这个方案的核心思路是:通过遍历incoming数组的每个索引,为每个对应位置的incoming.{key}字段单独生成验证规则,其中gte规则明确指向同索引的outgoing.{key}字段,最后将这些动态生成的规则和原有基础规则合并,就能精准实现按索引配对的数组验证效果。
内容的提问来源于stack exchange,提问作者Rezky Rizaldi
相关产品推荐
相关产品推荐

