使用breadcrumbs包时调用未定义的方法Illuminate \ Foundation \ Application :: share()

时间:2017-05-01 18:10:59

标签: php laravel laravel-5.4

今天,我想在laravel 5.4 中使用Laravel Breadcrumbs包。我使用了laravel 5.3 没有任何问题,一切正常。

但是当运行应用程序时,我收到了这个错误:

FatalErrorException in ServiceProvider.php line 34:
Call to undefined method Illuminate\Foundation\Application::share()

我搜索了那个,我发现已经删除了la lavel 5.4 share。我必须改为使用singleton

但是当我做了那些改变时ServiceProvider.php就像这样:

public function register()
    {
        $this->app['breadcrumbs'] = $this->app->singleton(function($app)
        {
            $breadcrumbs = $this->app->make('DaveJamesMiller\Breadcrumbs\Manager');

            $viewPath = __DIR__ . '/../views/';

            $this->loadViewsFrom($viewPath, 'breadcrumbs');
            $this->loadViewsFrom($viewPath, 'laravel-breadcrumbs'); // Backwards-compatibility with 2.x

            $breadcrumbs->setView($app['config']['breadcrumbs.view']);

            return $breadcrumbs;
        });
    }

我又出了一个错误。像这样:

ErrorException in Container.php line 1057:
Illegal offset type in unset

我不知道是什么问题。有谁可以帮助我?

更新:

我找到了解决方案Here

1 个答案:

答案 0 :(得分:1)

第一个问题是单例实例需要将一个类绑定为第一个参数,在本例中为'breadcrumbs'

第二个问题是您不需要为单例实例显式声明数组键。所以它应该是这样的:

$this->app->singleton('breadcrumbs', function($app)

下一个问题是您使用的软件包是abandoned。开发人员将不再维护它。

最后一个问题是您使用的是版本< 3.0.2。因此,将composer.json中的版本更改为3.0.2,然后安装,然后您就不需要修改任何文件。