我必須實現使用主題的能力。我試過https://github.com/liip/LiipThemeBundle,它的工作原理。 但因爲我使用多站點功能(即SITE_ID取決於域名被定義)的路徑應該是這樣的:高級主題支持
- 應用程序/網站/ {} SITE_ID /資源/主題/手機/ BUNDLENAME /模板.html.twig
- 應用程序/網站/ {} SITE_ID /Resources/BundleName/views/template.html.twig
- 的src/BUNDLENAME /資源/主題/手機/ template.html.twig
- 的src/BUNDLENAME /Resources/views/template.html.twig
如果我要求::template.html.twig
路徑將是:
- 應用程序/網站/ {} SITE_ID /Resources/themes/phone/template.html.twig
- 應用程序/網站/ {} SITE_ID /資源/視圖/ template.html.twig
所以問題是:
的SITE_ID唯一可以獲取的,當運行
$container->get('engine.site')->getId()
。我試圖進入Liip \ ThemeBundle \ Locator \ FileLocator的構造函數,並在那裏調整$this->path
,以便能夠爲視圖的不同站點獲取路徑app/Resources/sites/{site_id}/
(但是會得到app/sites/{site_id}/Resources/
的超級站點)。但是這樣我們當然會在第一次請求和高速緩存尚未形成時得到錯誤(«Whoops, looks like something went wrong. InactiveScopeException: You cannot create a service ("request") of an inactive scope ("request").»
)。而其他任何請求都可以正常工作。但這實在不是一個解決方案。 從這個問題是我可以在哪裏動態地建立模板路徑?LiipThemeBundle中的所有主題都可以在config中設置。 但如何讓我的動態此列表(所有的主題,我們可以用
$container->get('engine.site')->getThemes())
取?