Laravel中exists验证规则对数组无效问题求助
Laravel数组验证失效问题解决
你当前的验证规则存在两处关键问题,导致无效数据能绕过校验:
- 数组元素验证语法错误:Laravel中验证数组的每个子元素,正确语法是
字段名.*,你写的curso_inteligencia_id*少了点号,系统无法识别这是数组元素的验证规则。 - 规则代码不完整:第二个规则块缺少闭合的
],语法错误会直接导致该规则不生效。
修正后的验证规则
'curso_inteligencia_id' => [ 'nullable', 'array', ], 'curso_inteligencia_id.*' => [ 'numeric', 'exists:curso_inteligencia,id', 'required', // 可选:如果数组非空时要求每个元素必须填写,可根据业务需求添加 ],
额外处理(可选)
由于Select2允许手动输入,可能出现前端直接传单个字符串而非数组的情况,建议在验证前统一格式化请求数据,确保无论传单个值还是数组,都能被正确校验:
// 在控制器验证前添加这段代码 $request->merge([ 'curso_inteligencia_id' => is_array($request->curso_inteligencia_id) ? $request->curso_inteligencia_id : [$request->curso_inteligencia_id] ]);
内容的提问来源于stack exchange,提问作者Allyson Xtreme
相关产品推荐
相关产品推荐

