web-dev-qa-db-ja.com

未定義のメソッドIlluminate \ Foundation \ Application :: bindShared()の呼び出し

私はLaravel 5.0から5.1にアップグレードしました。

私はこのエラーを受け取ります:

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

そのため、いくつかの検索の後、bindSharedをシングルトンに変更する必要があります。

Vendor/illuminate/html/HtmlServiceProvider.phpでこれを行うことができます

問題は、別の開発者がプロ​​ジェクトで動作し、composer=インストールを実行するか、サーバーにデプロイするときに何が起こるかです。

ベンダーフォルダー内のファイルへの変更を保持するにはどうすればよいですか?

14
panthro

あなたのコメントに基づいて、あなたの問題を確認しました(質問でHTMLコンポーネントについて言及しているので、すぐに気づいたはずです)。

illuminate/htmlコンポーネントは、Laravel適切なものの一部ではなくなり、5.1標準に準拠するようにまだ更新されていません。実際、今では正式に放棄されていると確信しています。テイラー。

ただし、illuminate/html要件を laravelcollective/html に置き換えることができます。これは、communityによるライト/ htmlの公式の引き継ぎであり、ドロップインの置き換えになります。

vendorの中のものをいじる必要はありません!

26
alexrussell

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

次の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 ()
    {
        // ... 
    });
2
Igor Parra

この問題はbindShared()メソッドが原因で発生し、singleton()に変更するだけです。

ファイルは次の場所にあります:/projectname/vendor/illuminate/html/HtmlServiceProvider.php

行番号を変更:36および49

1
Jayant Pandey

私はRails開発者&laravel&その最初の日であり、このフォームビルダーの問題で立ち往生しました。多くの議論や投稿を行ってきましたが、 https://laravelcollective.com/docs/5.0/htmlで解決策を得たブレードフォームビルダーを使用するには(フォーム: :open)composer.jsonを変更し、"laravelcollective/html": "~5.0"ブロック内。次に、composer updateを実行します。これにより、プロジェクトでは新しい依存関係のみが使用可能になります。ここで、「Collective\Html\HtmlServiceProvider」を追加します。プロバイダーブロック内のconfig/app.phpにも追加する必要があります。

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

エイリアスブロック内のconfig/app.php内。

php artisan serveを実行し、ブレードエンジンを備えたForm Builderをお楽しみください。

1
Amit