我創建了一個可以管理多個網站的應用程序。如果網站有使用權限,可以在網站上使用很多「擴展」(捆綁)。權限(該網站可以使用極好的捆綁包)在我的應用程序中進行管理,並保存在數據庫中(使用允許的捆綁包的名稱空間)。Symfony2在AppKernel中使用getDoctrine()來動態註冊包
編輯:
當我打電話給一個網站時,捆綁包被加載到WebsiteKernel(一個普通的AppKernel,每個網站通常使用)。
每個網站都有自己的應用和網絡文件夾。所以每個網站都有一個單獨的應用程序緩存。每個網站都有它自己的WebsiteKernel.php(=一個普通的AppKernel)。
現在,我要註冊爲當前網站名爲允許束在動態的
其 WebsiteKernel。在帖子「Is it possible to dynamically register bundles in Symfony2?」中,這是通過查看捆綁目錄完成的。我想以同樣的方式執行此操作,但我只想將保存爲「允許使用本網站」的軟件包包含在數據庫中。
爲此,我需要訪問存儲庫以獲取允許的包名稱空間。我以爲我可以做類似$this->getDoctrine()->getRepository('MyAppBundle:MyObject');
但我不知道如何在WebsiteKernel(= AppKernel)中調用這個函數。當我嘗試撥打$this->getDoctrine()
時,我有一個UndefinedMethodExeption。當然,我試圖在註冊了教義束之後這樣做。
所以問題是:我該如何更改WebsiteKernel(= AppKernel)中的代碼才能使用$this->getDoctrine()
?
btw .:這兩個帖子有類似的問題,但他們還沒有得到答覆。
- Symfony2: How to dynamically register a bundle (and clear the cache) from other bundle's controller
- Symfony2 register bundle and its routes at runtime
由於服務容器尚未初始化,您無法在registerBundles中獲得任何服務 – viktor77