如何显示消息中的参数? laravel 验证者

How to show the parameter in message? laravel validator

Note: I done searching a solution from other similar questions but none helped.

我在 AppServiceProvider.php

中创建了一个自定义验证器
Validator::extend('eligible_age', function ($attribute, $value, $parameters, $validator) {
    //some statements here
});

验证器与下面的示例完全一样

'birthdate' => 'required|eligible_age:22'

我的问题是如何使用参数显示错误消息?像下面的例子:

The birthdate is not eligible. (must at least 22 years old).

您应该使用 addReplacer 来包含命名参数,例如 age。请参阅下面的示例。

解决方案 1。直接把message放到validator里面。

Validator::extend('eligible_age', function ($attribute, $value, $parameters, $validator) {

    $validator->addReplacer('eligible_age', function($message, $attribute, $rule, $parameters){
        return str_replace([':age'], $parameters, 'The '. $attribute .' is not eligible. (must at least :age years old).');
    });

    //return either true or false
});

解决方案 2。只需命名参数,并在 validation.php.

中设置消息
Validator::extend('eligible_age', function ($attribute, $value, $parameters, $validator) {

    $validator->addReplacer('eligible_age', function($message, $attribute, $rule, $parameters){
        return str_replace([':age'], $parameters, $message);
    });

    //return either true or false
});

而你在lang\en\validation.php的消息中,你可以使用年龄来显示参数。

'eligible_age' => 'The :attribute is not eligible. (must at least :age years old).'