【问题标题】:i have this error when i want tu use model binding in laravel 5.8当我想在 laravel 5.8 中使用模型绑定时出现此错误
【发布时间】:2020-04-04 10:07:31
【问题描述】:

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'));

声明 App\Providers\RouteServiceProvider::boot(App\Providers\Router $router) 应该兼容 Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot()

【问题讨论】:

    标签: laravel laravel-5.8


    【解决方案1】:

    您的问题来自 PHP 继承。重写方法时,必须保持与父方法相同的签名(__construct 除外)。 Laravel 服务提供者的boot 方法是通过容器调用的,所以你可以使用依赖注入,但在这种情况下不能使用,因为App\Providers\RouteServiceProvider 继承自另一个已经定义了boot 方法的服务提供者。 在您的情况下,您需要从签名中删除路由器并从方法内容中检索它,这要归功于

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

    【讨论】:

    • 我是 laravel 的新手,我现在该怎么办
    • 如何指定控制器(aticleControler)
    • $router->get('/user', 'UserController@index'); 例如
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多