Vin*_*rat 5 validation laravel
在复杂的形式中,我们需要为数组构建一些验证规则,这些规则应该仅在基于每个项目数据的某些复杂逻辑上触发。
\n数组验证的定义方式通常是这样的
\n $validator->sometimes(\n "items.*.level",\n \'required|int|min:0\',\n fn($formData) => /* $formData is the whole form data, not for the current item */\n );\nRun Code Online (Sandbox Code Playgroud)\n然而,如上所示,确定何时触发这些规则的闭包对于表单数据是全局的,而不是对于项目的数据。
\n因此,我们动态地为每个项目添加规则,如下所示:
\nforeach ($formData as $itemId => $itemData) {\n $validator->sometimes(\n "items.$itemId.level",\n \'required|int|min:0\',\n fn() => $itemData[\'type\'] === 123 && $itemData[\'category\'] > 30\n );\n}\nRun Code Online (Sandbox Code Playgroud)\n我们必须这样做,因为据我所知,无法定义仅查看相应项目数据的有时规则。
\n一切都很好。我们遇到的一个问题是验证消息的翻译。我们在validation.php文件中有:
\'attributes\' => [\n \'items.*.level\' => \'Niveau\',\n]\nRun Code Online (Sandbox Code Playgroud)\n那不会被拾取。显示的消息仍然是 \xc2\xab 字段 items.12.level 是必需的 \xc2\xbb 而不是 \xc2\xab 字段 Niveau 是必需的 \xc2\xbb 。
\n有什么方法可以让验证器选择最接近的匹配属性名称并让*占位符按其应有的方式运行吗?
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |