【问题标题】:Laravel5 `RouteServiceProvider` `should be compatible with` ErrorLaravel5`RouteServiceProvider``应该兼容`错误
【发布时间】:2018-01-20 19:07:16
【问题描述】:

我正在用 Laravel5 开发一个 web 应用程序,在 Controller 的代码中,我写了如下代码。

public function show($id)
{
    $post = Post::find($id);
    \View::share(compact('post'));
    return view('posts.show');
}

但是,我想写如下。

public function show(Post $post)
{
    \View::share(compact('post'));
    return view('posts.show');
}

RouteServiceProvider.php 中,我添加了Router $router

public function boot(Router $router)
{

但是,它不起作用,并且我收到了以下错误。

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

什么是问题? 谢谢!

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你应该试试:

    请输入use Route;而不是使用App\Providers\Router;并尝试

    或者您也可以使用app('router')->pattern()

    更多详情请关注this link

    【讨论】:

      【解决方案2】:

      boot 方法继承自 Illuminate\Foundation\Support\Providers\RouteServiceProvider,它与您的签名不同,导致此错误。

      如果您必须在boot 方法中使用路由器,则使用app() 辅助函数来获取路由器的实例。

      public function boot()
      {
          $router = app('router'); // Router Instance
      
          parent::boot();
      }
      

      【讨论】:

      • 感谢您的回答!正如你所说,使用app('router')->model('post', 'App\Post');,它工作得很好! Route::model('post', \App\Post::class); 也是。
      • @hiel 是的。两者都是做同一件事的不同方式,即“从 laravel 的 IOC 容器中解析一个实例”。
      • @hiel Route::model 是一种Facade 方式,app('router') 是一种Helper 方式。
      【解决方案3】:

      你使用什么laravel 版本?

      在5.3以后的版本,你必须写如下。

      public function boot()
      {
          //
          parent::boot();
          Route::model('post', \App\Post::class);
      }
      

      参考:

      https://readouble.com/laravel/5.3/en/routing.html

      https://readouble.com/laravel/5.2/en/routing.html

      Explicit Binding 部分。

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 1970-01-01
        • 2011-04-30
        • 2014-05-30
        • 1970-01-01
        • 2018-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多