You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:02:10