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

inn6fuwd  于 2023-04-07  发布在  其他
关注(0)|答案(5)|浏览(110)

我刚刚把Laravel从5.0升级到5.1。
我得到这个错误:

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

所以在一些搜索之后,我需要将bindShared更改为singleton。
我可以在vendor/illuminate/html/HtmlServiceProvider.php中完成此操作
问题是,当另一个开发人员在项目上工作并执行composer安装时,或者我部署到服务器时,会发生什么。
如何持久保存对供应商文件夹中文件的更改?

vmjh9lq9

vmjh9lq91#

好的,根据你的评论,我看到了你的问题(我应该早点注意到,因为你在你的问题中提到了HTML组件。
illuminate/html组件已经不再是Laravel的一部分了,而且还没有更新到符合5.1标准。事实上,我很确定它现在已经被Taylor正式放弃了。
但是,您可以用laravelcollective/html替换illuminate/html需求-这是illuminate/html的官方社区接管,应该是一个直接替代品。
不需要弄乱vendor中的东西!

ax6ht2ek

ax6ht2ek2#

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,
doinxwow

doinxwow3#

这个问题是由bindShared()方法引起的,只需将其改为singleton()即可
文件位于此处:/projectname/vendor/illuminate/html/HtmlServiceProvider.php
更改行号:36和49

ivqmmu1c

ivqmmu1c4#

以下Laravel功能已被弃用,并将在2015年12月发布的Laravel 5.2中完全删除:...
服务容器的bindShared方法已被弃用,取而代之的是singleton方法。
参考:https://laravel.com/docs/5.1/upgrade
因此,例如,从L5.1开始,您可以安全地更改:

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

致:

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

b1uwtaje5#

我是Rails开发人员,刚接触laravel,第一天就遇到了表单生成器的问题。我已经讨论过很多次了,但我的解决方案是**https://laravelcollective.com/docs/5.0/html要使用blade表单生成器(Form::open),我们需要更改composer.json**,并在require块中添加"laravelcollective/html": "~5.0"。然后运行composer update,因为只有新的依赖项才能用于您的项目。现在,在config/app.php的providers块中添加'Collective\Html\HtmlServiceProvider',还需要添加

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

在别名块中的config/app.php内。
运行php artisan serve享受使用刀片引擎的表单生成器。

相关问题