Мне нужно добавить пользовательский сбой проверки, я могу добавить такое сообщение
$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
Пожалуйста, дайте мне другой вариант.
Я добавил в вопрос пример validation.php. И lang - это не функция. Вы имели в виду @lang? Если да, он доступен только в Blade, я добавляю свой сбой в controller.
Вы имели ввиду $validator->errors()->add('my_number', __('validation.not_in', ['attribute' => __('validation.attributes.my_number')]));? Если да, то он работает. Но выглядит некрасиво. И это не то же самое, потому что он игнорирует пользовательский раздел validation.php.
извините, я думал, что фасад все еще написано в новых документах. в старых документах у нас был Lang::get(). Прошло какое-то время с тех пор, как я использовал laravel, у меня были только грубые воспоминания об этом.
Вы предатель :) что вы выбрали вместо Laravel?



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