今天,我想在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。
答案 0 :(得分:1)
第一个问题是单例实例需要将一个类绑定为第一个参数,在本例中为'breadcrumbs'
。
第二个问题是您不需要为单例实例显式声明数组键。所以它应该是这样的:
$this->app->singleton('breadcrumbs', function($app)
下一个问题是您使用的软件包是abandoned
。开发人员将不再维护它。
最后一个问题是您使用的是版本< 3.0.2
。因此,将composer.json
中的版本更改为3.0.2
,然后安装,然后您就不需要修改任何文件。