Laravel:自定义Rule::notIn验证规则的消息配置方法
解决Laravel中Rule::notIn的自定义验证消息问题
嘿,我懂你的困扰!Laravel文档有时候确实没把这种细节讲得太直白,但其实给Rule::notIn添加自定义消息特别简单,关键是找对对应的规则标识就行。
核心思路
Rule::notIn()对应的底层验证规则名称是not_in,所以你只需要在自定义消息数组里加上email.not_in这个键,就能替换掉默认的错误提示了。
修改后的完整代码示例
$validator = Validator::make($user, [ 'first_name' => 'required|min:2', 'email' => [ 'required', 'email', Rule::notIn(array_column(Customer::getEmails(), 'email')) ] ], [ 'email.required' => 'Email is required (Custom message)', 'email.not_in' => 'This email address is already registered in our system.' // 这里就是notIn的自定义消息 ]);
额外说明
你之前看到默认的“The email is invalid”,是因为Laravel在找不到对应规则的自定义消息时,会 fallback 到通用的“字段无效”提示。但只要我们明确指定字段名.not_in的消息,系统就会优先使用我们自定义的内容。
如果之后你用到自定义Rule类(而非Rule::notIn这种内置规则),那需要在自定义Rule类里重写message()方法来返回自定义提示,但你的场景用上面的方法就完全够用啦。
内容的提问来源于stack exchange,提问作者Abey
相关产品推荐
相关产品推荐

