2013-05-08 28 views
0

這有點複雜的解釋。我的使用情況如下:Twig基於路徑的重載

比方說,我有以下文件系統結構:

/client/name/web/dashboard.twig <- extends dashboard.twig - file might not exist 
/app/name/web/dashboard.twig <- extends dashboard.twig - file might not exist 
/web/dashboard.twig    <- extends layout.twig - file always exists 
/web/layout.twig    <- the base template  - file always exists 

假設我跑$twig->render('dashboard.twig');,我希望它開始與最上面dashboard.twig,繼續作爲順序去上面指定的順序。

目前的問題是,小枝最後會在無限循環中試圖每次加載第一個模板文件。 在the recipes section中,有一個例子可以避免使用路徑。這不能在我的情況下工作,因爲的幾個問題:

  1. /client/name/web/dashboard.twig的開發商不應該知道/app/name/web/dashboard.twig文件。
  2. 仍然無法識別name路徑段,因此路徑概念無法工作。

我能想到的唯一解決方案是以某種方式插入樹枝並告訴它在加載後立即「彈出」模板文件,以消除無限循環。

API文檔的這一部分似乎有用:http://twig.sensiolabs.org/api/master/Twig_Loader_Filesystem.html

回答

0

感謝來自Charles一個答案,我已經能夠找到一個解決我的問題。

主要思想是兩個重載「擴展」Twig標籤,其代碼將擴展文件的文件名添加到稍後傳遞給加載程序的名稱中。