在Laravel中验证数组并使用自定义错误消息时,有什么方法可以访问引发验证失败的数组编号/位置?
尝试操作Request消息数组中的:attribute或:key无效,因为稍后会翻译占位符(请参阅:它们不是实际变量)
我正在尝试显示以下消息:
object.property.*.required => 'The property on object # is required'
否则,您最终会得到类似的东西:
object.property.3 is required
我想抓住这个号码,以便提出更友好,更具描述性的信息。
答案 0 :(得分:1)
好吧,这可以通过 replacer
立面上的 Validator
方法来实现。用 replacer
方法添加AppServiceProvider@boot
。
//...
public function boot()
{
Validator::replacer('required', function ($message, $attribute, $rule, $parameters) {
if (str_contains($message, ':nth') && preg_match("/\.(\d+)\./", $attribute, $match)) {
return str_replace(":nth", $match[1]+ 1, $message);
}
return $message;
});
}
//...
该属性的自定义验证消息必须包含 :nth
object.property.*.required => 'The property on object :nth is required'