2016-11-09 60 views
2

私はlaravel 5.3を使用しています。作成したCMSの最初の裸のパッケージを作成しました。その後サービスプロバイダのlaravelをconfig/app.phpに自動的に追加し、自動ロードの設定

"autoload": { 
      "classmap": [ 
       "database" 
      ], 
      "psr-4": { 
       "App\\": "app/", 
       "Corium\\MediaManager\\" : "packages/corium/mediaManager/src" 
      } 
     }, 

: しかし、私は、これはドラッグ&ドロップまたは管理エリアで選択したオプションなどから自動的に行うことにしたい手動で自動ロードをcomposer.jsonするために追加されないようにする正常に動作します私はこれを望みます:Corium\MediaManager\MediaManagerServiceProvider::class,はバックエンドコードを入力する必要があるエンドユーザなしでconfig/app.phpプロバイダ配列に追加されました。これを行うための最善の方法は何ですか?私はこの仕組みを働かせる方法を理解できません。 ありがとうございます

答えて

1

サービスの登録は、ほとんどの場合、サービスプロバイダ内で行う必要があります。ご存知のように、サービスプロバイダはconfig/app.phpに登録されているため、少なくとも1つのプロバイダを手動で登録する必要があります。ただし、そのプロバイダ内では、アプリケーションインスタンスであるappプロパティにアクセスすることができます。これは、registerメソッドを呼び出して追加のプロバイダを登録できます。この方法では、1つのプロバイダを事前登録し、追加のプロバイダをコードとして必要に応じて登録することができます。

Writing Service Providersに関するドキュメントをお読みください。

+0

もし私がパッケージサービスプロバイダをアーチングしているのであれば、データベーステーブルにある他のパッケージを保存して、実行して登録するループを作成するか、より良い方法がありますか? – RPSystems

+0

私はおそらくconfigディレクトリ内の別のconfigファイルかそのようなファイルに入れます。しかし、それはあなた次第です。なぜあなたは動的にサービスをロードしたいのか分かりませんが、私はあなたのCMSが最初にすべてを登録し、必要なものだけを使用してより速く実行されるように感じます。 – samrap

関連する問題