我有以下自定义验证规则...
Validator::extend('empty_with', function ($attribute, $value, $parameters, $validator) {
$other = array_get($validator->getData(), $parameters[0], null);
return ($value != '' && $other != '') ? false : true;
}, "The :attribute field is not required with the :other field.");
并且正在像...一样使用它
$validator = Validator::make($request->all(), [
'officer' => 'sometimes|integer',
'station' => 'empty_with:officer,|integer',
]);
当前收到的错误消息是
The station field is not required with the
:other
field.
对比我想要的东西;
The station field is not required with the officer field.
如何在错误消息中设置第二个参数“军官”:属性是... ??
答案 0 :(得分:1)
您需要添加自定义替换器,以配合自定义验证规则。请参阅“定义错误消息” here。
\Validator::replacer('empty_with', function ($message, $attribute, $rule, $parameters) {
return str_replace(':other', $parameters[0], $message);
});
此代码告诉Laravel,当empty_with
规则失败时,应先通过该闭包运行消息,然后再将其传递回用户。闭包执行简单的字符串替换,并返回修改后的错误消息。
在大多数情况下,每个验证规则都有自己的消息替换规则,因为它取决于特定的属性及其顺序。尽管用第一个参数替换:other
时有一些规则,但它不是自动的,并且为使用它的每个规则明确定义。值得研究Illuminate\Validation\Concerns\ReplacesAttributes
特性,以了解Laravel如何处理其内置规则的替换。