私はLaravel 5.0から5.1にアップグレードしました。
私はこのエラーを受け取ります:
Call to undefined method Illuminate\Foundation\Application::bindShared()
そのため、いくつかの検索の後、bindSharedをシングルトンに変更する必要があります。
Vendor/illuminate/html/HtmlServiceProvider.phpでこれを行うことができます
問題は、別の開発者がプロジェクトで動作し、composer=インストールを実行するか、サーバーにデプロイするときに何が起こるかです。
ベンダーフォルダー内のファイルへの変更を保持するにはどうすればよいですか?
あなたのコメントに基づいて、あなたの問題を確認しました(質問でHTMLコンポーネントについて言及しているので、すぐに気づいたはずです)。
illuminate/html
コンポーネントは、Laravel適切なものの一部ではなくなり、5.1標準に準拠するようにまだ更新されていません。実際、今では正式に放棄されていると確信しています。テイラー。
ただし、illuminate/html
要件を laravelcollective/html に置き換えることができます。これは、communityによるライト/ htmlの公式の引き継ぎであり、ドロップインの置き換えになります。
vendor
の中のものをいじる必要はありません!
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,
次の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 ()
{
// ...
});
この問題はbindShared()メソッドが原因で発生し、singleton()に変更するだけです。
ファイルは次の場所にあります:/projectname/vendor/illuminate/html/HtmlServiceProvider.php
行番号を変更:36および49
私は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をお楽しみください。