Laravel Nova中如何修改错误提示信息?(Laravel8+Nova3环境)
解决Laravel Nova多语言字段验证提示不生效问题
核心原因
使用Digitalcloud\MultilingualNova\Multilingual时,多语言字段会被自动拆分为带语言后缀的字段(比如name_en、name_zh),原字段的required规则实际作用于这些拆分后的字段,直接修改Nova目录下的validation.php不会生效,需针对多语言字段做适配处理。
解决方法
方法1:字段定义时直接指定验证消息
在Nova字段代码中,通过规则的第二个参数自定义提示内容,或用->attribute()定义字段别名匹配翻译:
Text::make('Name') ->sortable() ->rules(['required', 'max:255'], [ 'required' => '名称不能为空', ]) ->attribute('名称'),
方法2:在Laravel全局语言文件中配置
多语言字段实际为原字段名+语言后缀,需在全局语言目录中配置对应翻译:
- 打开
resources/lang/zh-CN/validation.php(以中文为例) - 在
attributes数组中添加多语言字段别名:
'attributes' => [ 'name_en' => '英文名称', 'name_zh' => '中文名称', // 其他多语言字段依次添加 ],
- 确保
required规则的模板正确:
'required' => ':attribute 不能为空',
方法3:使用MultilingualNova的多语言验证规则
借助扩展包自带的translatableRules方法,为不同语言指定对应提示:
use Digitalcloud\MultilingualNova\Multilingual; Multilingual::make('Name') ->sortable() ->rules('required', 'max:255') ->translatableRules([ 'required' => [ 'en' => 'The name is required.', 'zh' => '名称不能为空', ] ]);
方法4:清除缓存
修改语言文件后,执行以下命令清除缓存确保生效:
php artisan cache:clear php artisan config:clear php artisan view:clear
关键注意事项
- Nova优先读取Laravel全局
resources/lang/目录下的语言文件,无需修改nova/resources/lang/内的文件 - 验证规则实际作用于拆分后的带后缀字段,翻译配置需对应这些字段名
内容的提问来源于stack exchange,提问作者Maksim Riabchenko
相关产品推荐
相关产品推荐

