Laravel 8中如何自定义表单验证提示信息?
Laravel 8 自定义表单验证提示不生效的解决方法
你的问题出在自定义消息的键名与验证字段不匹配:验证规则针对的是option_price.0这个带索引的字段,但自定义消息用的是option_price.gt:0,Laravel无法匹配到对应字段的规则提示,因此会使用默认信息。
以下是两种可行的修正方案:
方案1:针对单个索引字段设置提示
直接使用完整的字段名+规则名作为消息键:
$validator = Validator::make($request->all(), [ 'option_price.0' => 'required|gt:0', ], [ 'option_price.0.required' => '选项价格不能为空', 'option_price.0.gt' => '选项价格必须大于0', ]);
方案2:针对所有索引字段批量设置提示
如果你的option_price是数组(存在多个索引如option_price.1、option_price.2),可以用通配符*匹配所有索引,统一设置提示:
$validator = Validator::make($request->all(), [ 'option_price.*' => 'required|gt:0', // 验证所有option_price数组元素 ], [ 'option_price.*.required' => '每个选项价格不能为空', 'option_price.*.gt' => '每个选项价格必须大于0', ]);
视图中正确获取错误提示
在前端视图里,需要对应字段名来显示错误:
@error('option_price.0') <span class="text-danger">{{ $message }}</span> @enderror
如果是批量验证,循环数组元素时对应索引获取:
@foreach($optionPrices as $index => $price) @error("option_price.{$index}") <span class="text-danger">{{ $message }}</span> @enderror @endforeach
内容的提问来源于stack exchange,提问作者abu abu
相关产品推荐
相关产品推荐

