В документации Laravel есть описание того, как добавить свое правило валидации, вот что они пишут: http://laravel.su/docs/5.0/validation#custom-validation-rules
1 2 3 4 |
Validator::extend('foo', function($attribute, $value, $parameters) { return $value == 'foo'; }); |
С виду все просто и понятно, если функция вернет true – значит валидация прошла успешно, если false – вывод ошибки.
Вот какраз на выводе ошибки и возникает проблема у разработчика, ведь сказано всего про два варианта её кастомизации: 1. Как третий параметр в Validator::make() 2. В файле локализации.
Но почему бы не указать текст ошибки в самой callback функции, которую мы подаем в extend? Странно, что в документации об этом не сказали, но на callback функцию подается еще один, четвертный параметр, в котором содержится объект самого валидатора. Именно благодаря этому четвертому параметру мы можем добавить сообщение об ошибке сразу в теле функции фалидатора:
1 2 3 4 5 6 7 8 |
Validator::extend('foo', function($attribute, $value, $parameters, $validator) { if($value != 'asd') { $validator->setCustomMessages(['foo' => 'Our custom message error']); return false; } return true; }); |
Вот так все просто оказывается.
Просмотров : 3457