2014-06-24 49 views
0

我只是從Symfony 2.0升級到2.5。我在包控制器內呈現模板的問題,讓我們把它DemoBundle:Twig只能在symfony中找到名稱空間的包名

$this->render("AcmeDemoBundle:Index:index.html.twig"); 

細枝正在尋找AcmeDemoBundle,但只知道該命名空間@AcmeDemo

所以,當我改變我的控制器代碼下面,它的工作原理:

$this->render("@AcmeDemo/Index/index.html.twig"); 

爲什麼只樹枝理解命名空間中的軟件包名稱,而不是完整的名字嗎?

我在枝條配置中錯過了什麼嗎?我正在運行PHP 5.3.3。

+0

如果@Template Annotation正在工作,您是否嘗試過? http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/view.html – Nextar

+0

是的,我試圖在控制器操作中使用@Template Annotation,而樹枝仍然無法找到我的模板文件。我想問題在於調用Twig_Loader_Filesystem-> findTemplate(AcmeDemoBundle:Demo:hello.html.twig)。因爲Twig只知道命名空間「AcmeDemo」,所以它不能映射「AcmeDemoBundle」並正在尋找__main__命名空間中的文件。 – kieste

+0

同時,我發現Twig實際上是在查找模板文件,但它在使用名稱空間模板名稱而不是名稱空間時正在其他位置進行搜索。我的網絡用戶在該位置沒有讀取權限。這一定是由我的Linux環境中的一些符號鏈接引起的。 – kieste

回答

0

找到根本原因。在控制檯中,我從webapp用戶沒有讀取權限的路徑調用php app/console cache:clear。由於twig緩存了一些包含這些絕對路徑的配置文件,因此無法在以webuser身份執行時讀取模板。

相關問題