Как показать параметр в сообщении? laravel валидатор - PullRequest
0 голосов
/ 15 апреля 2020

Примечание: я выполнил поиск решения по другим подобным вопросам, но ни один не помог.

Я создал обычный валидатор внутри 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).

1 Ответ

1 голос
/ 15 апреля 2020

Вы должны использовать addReplacer , чтобы включить именованный параметр, например age . См. Пример ниже.

Решение 1 . Непосредственно поместите сообщение в валидатор.

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 . Просто назовите параметр и установите сообщение внутри проверки. 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).'
...