Ошибка пользовательской проверки Laravel с красивым сообщением

Мне нужно добавить пользовательский сбой проверки, я могу добавить такое сообщение

$validator->errors()->add('my_number', 'validation.not_in');

и я получаю сообщение об ошибке validation.not_in

Мне нужно такое сообщение об ошибке - The selected My Favourite Number is invalid.

Мой \resources\lang\en\validation.php настроен на отправку правильного сообщения и attributes к нему. В основном это выглядит так:

return [
    ...
    'not_in'               => 'The selected :attribute is invalid.',
    ....
    'attributes' => [
         'my_number' => 'My Favourite Number'
    ],

];

Неудачное решение

Единственное решение, которое я могу придумать, - это перейти к исходному коду Laravel и найти файл vendor\laravel\framework\src\Illuminate\Validation\Validator.php, найти функцию addFailure и сделать ее public вместо protected.

тогда я смогу делать такие вещи, как

$validator->addFailure('my_number', 'not_in', []);

И когда я это делаю, получаю сообщение The selected My Favourite Number is invalid. Как и ожидалось!

Но я не могу изменить исходный код Laravel

Пожалуйста, дайте мне другой вариант.

эээ, когда переопределить языковой файл в storage/lang/en? что validation.php и поменяй сообщение как хочешь, не работает? что вам дал lang('validation.not_in', [':attribute' => 'My Favourite Number'])?

Bagus Tesa 03.08.2018 03:15

Я добавил в вопрос пример validation.php. И lang - это не функция. Вы имели в виду @lang? Если да, он доступен только в Blade, я добавляю свой сбой в controller.

Yevgeniy Afanasyev 03.08.2018 03:40

Вы имели ввиду $validator->errors()->add('my_number', __('validation.not_in', ['attribute' => __('validation.attributes.my_number')]));? Если да, то он работает. Но выглядит некрасиво. И это не то же самое, потому что он игнорирует пользовательский раздел validation.php.

Yevgeniy Afanasyev 03.08.2018 04:07

извините, я думал, что фасад все еще написано в новых документах. в старых документах у нас был Lang::get(). Прошло какое-то время с тех пор, как я использовал laravel, у меня были только грубые воспоминания об этом.

Bagus Tesa 03.08.2018 05:08

Вы предатель :) что вы выбрали вместо Laravel?

Yevgeniy Afanasyev 03.08.2018 05:27
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Валидация полей ввода для базовой формы React
Валидация полей ввода для базовой формы React
В одном из моих проектов MERN Stack есть форма с именем, фамилией, контактным номером, адресом, электронной почтой, датой рождения, номером NIC, весом...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
0
5
107
0

Другие вопросы по теме

Похожие вопросы

Проверка шаблона Spring с использованием предопределенных валидаторов в поле, которое может быть либо электронной почтой, либо URL-адресом
Объединение нескольких проверок для полей ввода
Почему моя форма отправлена ​​после отмены диалогового окна подтверждения?
Создайте динамическую проверку данных раскрывающегося списка для нескольких строк с помощью Google Таблиц
Мгновенный запуск проверки JQuery для нескольких элементов
Создание массива ошибок и отображение их через экспресс flash
Как определить, не является ли диапазон (столбцы таблицы) полностью пустым?
Angular 6 / Clarity UI - проверка страницы формы, загрузка данных
Как выдать ошибку предупреждения при регистрации существующего электронного письма в базе данных с помощью Angular?
Проверка на стороне сервера и клиента не работает в частичном режиме модального всплывающего окна