2014-12-05 133 views
1

我工作的一個Symfony2的項目,目前正在設法使一個視圖我的控制器,但煩人我不斷看到此錯誤消息:路徑枝杈模板中的Symfony 2

Unable to find template 

所以我的理解有渲染函數的路徑部分存在問題。我試圖解決這個問題,但不管我如何改變我的路線,我總是得到這個消息。

的完整路徑test.html.twig文件:

src/Test/NewsInfrastructure/Sitemap/test.html.twig 

我這是怎麼implemente這個路徑:

return $this->templating->renderResponse('src:Test:NewsInfrastructure:Sitemap:test.html.twig', array('sitemap' => $this->siteMap->getSiteMap())); 

它是什麼,我做錯了什麼......?

+1

您應該使用Bundle名稱而不是完整路徑,或者使用斜槓而不是冒號。冒號符號只適用於Bundles。 – Erik 2014-12-05 10:26:31

+0

那麼像這樣的'NewsInfrastructure/Sitemap/test.html.twig'..?如果是這樣,我已經嘗試過,也失敗 – Tomazi 2014-12-05 10:28:36

+0

什麼是Bundle名稱?這是否工作? 「TestNewsInfrastructureBundle:Sitemaps:test.html」 – Erik 2014-12-05 10:29:55

回答

1

TwigBundle(TwigExtension)通過Bundle的文件夾(Resources/views)或​​搜索模板;

我認爲最簡單的方法,通過命名空間調用它,這樣渲染一個模板:

$this->render('@Vendor/Product/view.html.twig'); // src/Vendor/MyBundle/Resources/views/Product/view.html.twig 

@Vendor - 無需捆綁後綴,也是它的工作原理有點快..

或者

這可以幫助你,如果你真的想要加載模板,將其放在Resources文件夾以外:

$loader = new \Twig_Loader_Filesystem(PATH_TO_DIRECTORY); 
$twig = new \Twig_Environment($loader, array('cache' => false));  
$twig_code = $twig->render('myFile.html.twig', []); 

return new Response($twig_code); 
+0

他的模板不在資源文件夾中,捆綁包名稱也不以「Bundle」結尾。所以他可能還需要這樣做,並在「資源/視圖」文件夾中添加模板 – 2014-12-05 11:44:34

+0

@StrawHat他應該改變它然後 – xurshid29 2014-12-05 11:48:11

+0

我真的必須在我的twif文件下的資源/視圖...?以及如何保持這個命名約定:MYbundleBundle ..? – Tomazi 2014-12-05 11:50:03