2013-03-16 61 views
0

(a)一個bundle(bundle 1)包含主父樹枝模板。Symfony2中Twig的特定動態嵌入路徑

(b)另一個bundle(bundle 2)負責控制器的負載,每個控制器都呈現一個位於該bundle(bundle 2)內的Twig模板。該模板也從上面提到的主要父模板(模型1)擴展而來。硬編碼到主父模板的絕對路徑很好。 (c)父模板(內部捆綁1)還嵌入/包含存儲在另一個捆綁(捆綁2)中的另一個模板。

我可以爲上面的部分(c)設置一個相對路徑,這樣如果我創建了另一個bundle(bundle 3),它會自動工作(父模板包含來自調用它的bundle的模板)?它會拿起主要的父母,因爲它是一個絕對路徑,但它會拿起上面的(c)部分?顯然,我不能使用絕對路徑作爲父節點嵌入/包含的模板。

回答

0

如果我理解得當,你會問如何在從一個包到另一個包有依賴的情況下輕鬆地擴展模板。

我建議您閱讀有關overriding bundle templates的文檔。

一旦閱讀本文,您將注意到一個指向[軟件包繼承文檔]的鏈接。

舉個例子,我們有3根有明確的名稱: - GenericSiteBundle - GenericUserBundle - SpecificSiteBundle

我們要創建一個應用程序的通用結構,可以通過其他應用程序使用,我們也想他們是不同的,因此我們需要能夠改變佈局(頁眉,頁腳,列等)。

模板結構可能類似延伸GenericSiteBundle:Layout:simple.html.twig

你想改變一個特定的簡單佈局;您只需聲明GenericSiteBundle作爲SpecificSiteBundle的父項並創建SpecificSiteBundle:Layout:simple.html.twig即可。確保只有軟件包名稱不同,否則它將無法在子包中找到該模板。您也會喜歡parent() twig function。它允許您獲取父塊的內容並將其添加到子塊中。

這不完全是你想要做的,但這是正確的方式來處理繼承。