複数の Web サイトを管理できるアプリケーションを作成しました。使用する権利があれば、Web サイトで使用できる「拡張機能」 (バンドル) が多数あります。権利 (どの Web サイトがどのバンドルを使用できるか) はアプリケーションで管理され、(許可されたバンドルの名前空間で) データベースに保存されます。
編集: Web サイトを呼び出すと、バンドルは WebsiteKernel (各 Web サイトで一般的に使用される通常の AppKernel) に読み込まれます。
各 Web サイトには、独自の app- および web- フォルダーがあります。そのため、Web サイトごとに個別のアプリ キャッシュがあります。各 Web サイトには独自の WebsiteKernel.php (= 通常の AppKernel) があります。
ここで、現在呼び出されている Web サイトの許可されたバンドルをそのWebsiteKernelに動的に登録したいと考えています。 投稿「Symfony2 でバンドルを動的に登録することは可能ですか?」では、これは bundle-directories を調べることによって行われました。これを同じ方法で行いたいのですが、「この Web サイトで許可されている」として保存されているバンドルのみをデータベースに含めたいと考えています。
そのためには、リポジトリにアクセスして、許可されたバンドル名前空間を取得する必要があります。のようなことができると思ったのです$this->getDoctrine()->getRepository('MyAppBundle:MyObject');
が、WebsiteKernel(=AppKernel)でこの関数を呼び出す方法がわかりません。電話しようとすると$this->getDoctrine()
、UndefinedMethodExeption が発生します。もちろん、doctrine-bundle が登録された後にこれを実行しようとします。
問題は、WebsiteKernel (= AppKernel) のコードをどのように変更して使用する必要がある$this->getDoctrine()
かということです。
ところで、この 2 つの投稿には同様の問題がありますが、まだ回答がありません。