у меня есть эта ошибка, когда я хочу использовать привязку модели в laravel 5.8 - PullRequest
2 голосов
/ 04 апреля 2020

RouteServiceProvider

public function boot(Router $router)
    {
        parent::boot($router);

        $router->model('article','App\article');
    }

web. php

Route::resource('article','articleController');

контроллер

public function show(Article $article)
    {

        /*$article=Article::find($id);*/

        if(!$article){

            abort(404);

        }

        return view('article.show ',compact('article'));

Объявление приложения \ Providers \ RouteServiceProvider :: boot (App \ Providers \ Router $ router) должен быть совместим с Illuminate \ Foundation \ Support \ Providers \ RouteServiceProvider :: boot ()

1 Ответ

3 голосов
/ 04 апреля 2020

Ваша проблема происходит от PHP наследования. Когда вы переопределяете метод, вы должны сохранять ту же сигнатуру, что и родительский метод (за исключением __construct). Метод boot поставщика услуг Laravel вызывается через контейнер, поэтому вы можете использовать Dependency Injection, но не в этом случае, поскольку App\Providers\RouteServiceProvider наследуется от другого поставщика услуг, в котором уже определен метод boot. В вашем случае вам необходимо удалить Маршрутизатор из подписи и извлечь его из содержимого метода благодаря

$router = $this->app['router'];
...