调用未定义的方法Illuminate \ Foundation \ Application :: bindShared()

时间:2015-07-06 15:50:36

标签: laravel laravel-5 composer-php

我刚刚将Laravel从5.0升级到5.1。

我收到此错误:

Call to undefined method Illuminate\Foundation\Application::bindShared()

因此,经过一些搜索后,我需要将bindShared更改为单例。

我可以在vendor / illuminate / html / HtmlServiceProvider.php

中执行此操作

问题是,当另一个开发人员在项目上工作并执行编写器安装或部署到服务器时会发生什么。

如何更改供应商文件夹中的文件?

5 个答案:

答案 0 :(得分:24)

好的,根据您的评论,我看到了您的问题(我应该在您提出问题中的HTML组件时提前注意到它。

illuminate/html组件不再是Laravel本身的一部分,并且尚未更新以符合5.1标准。事实上,我很确定泰勒现在正式放弃它。

但是,您可以将illuminate/html要求替换为laravelcollective/html - 这是官方社区对illuminate / html的接管,应该是替代品。

不必弄乱vendor中的内容!

答案 1 :(得分:8)

Illuminate/html被放弃了。请改用Collective/html

要安装它,请使用以下

composer require "laravelcollective/html":"^5.2.0"

然后在app / app.php文件中更改/添加如下
对于提供者

Collective\Html\HtmlServiceProvider::class

和别名

'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,

答案 2 :(得分:1)

  

以下Laravel功能已被弃用   随着2015年12月发布的Laravel 5.2完全删除:...

     
    

服务容器的bindShared方法已被弃用了     单身方法。 ......

  

参考:https://laravel.com/docs/5.1/upgrade

因此,例如,从L5.1开始,您可以安全地更改:

    $this->app->bindShared(UserObserver::class, function ()
    {
        // ... 
    });

为:

    $this->app->singleton(UserObserver::class, function ()
    {
        // ... 
    });

答案 3 :(得分:1)

我是Rails开发人员& laravel& amp;它只是我的第一天,并陷入这个表单生成器问题。我已经完成了很多讨论和帖子,但我的解决方案是 https://laravelcollective.com/docs/5.0/html 要使用刀片表单构建器(Form :: open),我们需要更改 composer.json 并在require块中添加"laravelcollective/html": "~5.0"。 然后运行 composer update ,因为只有新的依赖项才可用于您的项目。 现在在提供程序块中的config / app.php里面添加' Collective \ Html \ HtmlServiceProvider'还需要添加

'aliases' => [
    // ...
      'Form' => 'Collective\Html\FormFacade',
      'Html' => 'Collective\Html\HtmlFacade',
    // ...
  ],

在别名块中的config / app.php内部。

运行php artisan serve 享受带有刀片引擎的表单构建器。

答案 4 :(得分:1)

此问题是由bindShared()方法引起的,只需将其更改为singleton()

即可

文件位于:/projectname/vendor/illuminate/html/HtmlServiceProvider.php

更改第36和49行