2015-12-30 44 views
0

我對Symfony比較陌生,目前使用的是2.8版本。我一直在使用@Template註解成功是這樣的:在Symfony控制器中選擇自定義模板文件

/** 
* @Route("/editleague/") 
* @Template() 
*/ 
public function editAction() { 
    return $array; 
} 

而且成功地呈現在包/資源樹枝模板/視圖/默認/ edit.html.twig

我決定,我想不同的響應(不是樹枝模板),如果它是一個POST請求,所以剛開始的時候,我改變了上面的代碼:

/** 
* @Route("/editleague/") 
*/ 
public function editAction() { 
    return $this->render("Default/edit.html.twig",$array); 
} 

但我得到一個500錯誤。我嘗試了各種組合,但沒有得到任何工作,我可以在函數本身控制渲染的模板。我相信這是一個簡單的問題,有更多經驗的人可以在幾秒鐘內找出答案。

+0

在你的例子中,變量'$ array'沒有定義(但這可能是由於你的問題中的一個不好的例子,對吧?)。因此,請顯示應用程序的日誌告訴你有關錯誤的信息,並/或在開發環境中訪問它,並告訴我們在那裏顯示的內容。 – xabbuh

+0

是的,$ array被定義了,我只是把這一部分留給專注於兩者之間改變的部分。我不能相信我忘了檢查開發模式。當我這樣做時,它說:無法找到模板「Default/edit.html.twig」。那麼Wha將成爲我的位置,我遵循(我認爲)與[symfony頁面](http://symfony.com/doc/current/book/controller.html#rendering-templates)上列出的想法相同。 –

+0

啊,我明白了。那麼請看@ Paulpro的答案。 – xabbuh

回答

1

因爲模板是在您的束的資源目錄,你應該在你的電話使用Symfony的邏輯名稱來呈現:

'AppBundle:Default:edit.html.twig' 

或:

':Default:edit.html.twig' 

See the difference路徑之間存儲在模板與您的app目錄中的模板對比。

+1

提供一些額外的上下文:Symfony最佳實踐是app/Resources/views'下的商店模板。因此,當文檔使用'render('Default/edit.html.twig')'時,引用的模板將在'app/Resources/views/Default/edit.html.twig'中搜索。但是,將模板存儲在自己的包中時,需要使用@Paulpro提供的名稱空間語法。因此'AppBundle:Default:edit.html.twig'轉換爲'src/AppBundle/Resources/views/Default/edit.html.twig(實際位置可能因您的包的位置而異)。 – xabbuh

+0

好的...它看起來像是爲我修復了它,我更好地瞭解模板位置。謝謝!將「Default/edit.html.twig」更改爲「Default/edit.html.twig」爲「Bundle :: Default/edit.html.twig」。 –

相關問題