before: 18 лет назад Сообщение валидатора Laravel не работает

Я новичок в Laravel. Так что, пожалуйста, расслабься со мной.

У меня есть это сообщение для валидатора даты "до: 18 лет назад".

The "" must be a date before 18 years ago.

Как я могу его настроить? Мне нужно что-то компилировать?

У меня есть это в моем validation.php, который находится в ресурсах / lang / en /

'custom' => [
    'dob' => [
        'before' => 'Invalid Age'
    ],
 ],

Я использую FormBuilder

https://pyrocms.com/help/developer-tools/form-builders/creating-a-form-builder

'dob' => [
        'type'   => 'anomaly.field_type.datetime',
        'config' => [
            "mode"          => "date",
            "date_format"   => "j F, Y",
             "year_range"    => "-100:-18",
             ],
        'rules'  => [
            'required','before:18 years ago' 
         ],

       ],

person zawhtut    schedule 10.04.2018    source источник
comment
Где вы проводите проверку? Покажите нам код валидатора.   -  person DevK    schedule 10.04.2018
comment
Я обновил свой вопрос. Спасибо за помощь.   -  person zawhtut    schedule 10.04.2018


Ответы (2)


Вы можете настроить сообщения проверки, указав атрибуты в тексте сообщения:

$messages = [
    'dob' => 'The :attribute must be a date before 18 years ago.',
];

При передаче в экземпляр валидатора будет заменен заполнитель :attribute.

$validator = Validator::make($input, $rules, $messages);

Используя языковые файлы, вы определяете текст сообщения так же:

'custom' => [
   'dob' => [
       'before' => 'The :attribute must be a date before 18 years ago.'
   ],
],

а затем, при желании, присвойте атрибуту собственное имя:

'attributes' => [
    'dob' => 'date of birth',
],

Вы можете извлекать строки из языковых файлов с помощью вспомогательной функции __. Метод __ принимает файл и ключ строки перевода в качестве своего первого аргумента.

Пользовательские сообщения об ошибках проверки

Локализация

person DigitalDrifter    schedule 10.04.2018

Я решил это следующим образом

В FormBuilder

'dob' => [
    'type'   => 'anomaly.field_type.datetime',
    'rules'  => ['required', 'older_than'],
    'config' => [
        'mode'        => 'date',
        'date_format' => 'j F, Y',
        'year_range'  => '-100:-18',
    ],
],

В приложении / Providers / AppServiceProvider.php

public function boot()
{
    Validator::extend(
        'older_than',
        function ($attribute, $value, $parameters, $validator) {
            $minAge = (!empty($parameters)) 
                ? (int) $parameters[0] 
                : 18;

            return (new DateTime)->diff(new DateTime($value))->y >= $minAge;
        }
    );

    Validator::replacer(
        'older_than',
        function ($message, $attribute, $rule, $parameters) {
            return "The age must be at least {$parameters[0]}";
        }
    );
}
person zawhtut    schedule 11.04.2018