Laravel 8验证多维数组时无法校验parameters下子元素如何处理
问题原因
你当前的验证规则写法不符合Laravel的多维数组验证规范,Laravel使用点语法访问嵌套数组元素,不支持[下标]的写法,因此input.parameters[0].value这类规则无法正常触发校验。
解决方案
方案1:固定下标校验
如果你的parameters数组长度固定为2,且第0项对应cciaa、第1项对应nrea,可以直接用点语法写下标:
$validated = $request->validate ([ 'input.partita_iva' => 'required', 'input.codice_fiscale' => 'required', // 校验第0项的name必须为cciaa,value必填 'input.parameters.0.name' => 'required|in:cciaa', 'input.parameters.0.value' => 'required', // 校验第1项的name必须为nrea,value必填 'input.parameters.1.name' => 'required|in:nrea', 'input.parameters.1.value' => 'required', ]);
方案2:动态长度批量校验
如果parameters数组长度不固定,想要校验数组内每一项都必须存在name和value字段,可以用通配符*匹配所有下标:
$validated = $request->validate ([ 'input.partita_iva' => 'required', 'input.codice_fiscale' => 'required', 'input.parameters.*.name' => 'required|string', 'input.parameters.*.value' => 'required', ]);
内容的提问来源于stack exchange,提问作者Qasim Ali
相关产品推荐
相关产品推荐

