ExampleRequest extends FormRequest
От класса ExampleRequest унаследовал два класса ExampleRequest1, ExampleRequest2
Создал основной контроллер ExampleController.
В нем добавил статическое свойство
public static $formRequest = ExampleRequest::class
и метод геттер с поздним связыванием
public static function getFormRequest() {
return static::$formRequest;
}
В ExampleController метод index(ExampleRequest $request){..}
Создал и добавил в config/app сервис провайдер ExampleServiceProvider
public function register()
{
$this->app->when(ExampleController::class)
->needs(ExampleRequest::class)
->give(function () {
return ExampleController::getFormRequest();
});
}
Создал контроллер Example1Controller extends ExampleController
Указал public static $formRequest = ExampleRequest1::class;
Однако теперь выдает ошибку: ExampleRequest is not instantiable
Подумал, что возможно нельзя связывать в провайдере абстрактные классы
и создал интерфейс ExampleInterface и добавил к ExampleRequest и в метод index() к ExampleController
Однако теперь выдает ошибку ExampleInterface is not instantiable
Может что-то упускаю?
что? ты пытаешься строку инстанцировать?)) ExampleRequest1::class - строка. Это во первых. Во вторых какой к черту метод в контроллере с поздним связыванием, зачем это? Все прописываешь в провайдере сразу. Типа public function register() { $this->app->when(ExampleController::class) ->needs(ExampleRequest::class) ->give(function () { return new ExampleRequest1(); }); }
В третьих - зачем юзать контекст биндинг для классов реквеста, когда у тебя в одном контроллере реквесты очень сильно могут разниться в зависимости от метода контроллер. Инжектишь в метод просто нужный форм реквест напрямую, без изъебов с контекстуальным связыванием
Обсуждают сегодня