Я пытаюсь переопределить метод doReplacements
в Illuminate\Validation\Validator
. Когда я расширяю родные Validator
и Request
классов, я получаю эту ошибку:Laravel 5.2 - расширение класса Validator
ReflectionException in Route.php line 270:
Class App\Http\Requests\FooRequest does not exist
Это то, что я сделал:
Расширение родной
Illuminate\Validation\Validator
:class MyCustomValidator extends Validator { protected function doReplacements($message, $attribute, $rule, $parameters) { //override this method } }
Использование
MyCustomValidator
в абстрактное расширение родногоApp\Http\Requests\Request
:abstract class MyCustomRequest extends Request { //Override native method by injecting the extending validator protected function formatErrors(MyCustomValidator $validator) { return $validator->getMessageBag()->toArray(); } }
Продлить
MyCustomRequest
с конкретным классом:class FooRequest extends MyCustomRequest { public function authorize() { return true; } public function rules() { return [ // rules go here ]; } }
Используйте
FooRequest
в методе контроллера:public function store(FooRequest $request) { //use the request and persist }
Я предполагаю, я отсутствую необходимый фасад , провайдера или контейнера. Я все еще изучаю эти темы и не понимаю их достаточно хорошо, чтобы знать хороший следующий шаг.
Ссылки:
Custom validator in Laravel 5 - Я последовал ответ, но все-таки получил ту же ошибку. Я хочу знать, если это даже отдаленно связано с моей проблемой, прежде чем устранять проблемы, которые я здесь пробовал.
Extending Custom Validation-Class - Проблема выглядит так же, ответ предполагает использование
Validator::extend
, который я знаю, может быть сделано вAppServiceProvider
, но в идеале мой код должен быть в своем собственном пакете поставщика. Опять же, не уверен, если уместно.
Я пытаюсь переопределить 'Validator :: метод doReplacements'. Отредактированный вопрос для уточнения – bsapaka