自定义Laravel验证消息中的阵列编号/位置

时间:2018-10-26 16:54:26

标签: laravel validation

在Laravel中验证数组并使用自定义错误消息时,有什么方法可以访问引发验证失败的数组编号/位置?

尝试操作Request消息数组中的:attribute或:key无效,因为稍后会翻译占位符(请参阅:它们不是实际变量)

我正在尝试显示以下消息:

object.property.*.required => 'The property on object # is required'

否则,您最终会得到类似的东西:

object.property.3 is required

我想抓住这个号码,以便提出更友好,更具描述性的信息。

1 个答案:

答案 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'