2013-07-01 51 views
17

我打電話渲染像這樣在我的樹枝模板(第18行)Symfony的控制器使嵌入錯誤:控制器URI「/ _fragment」不是調用

{{ render(controller('AcmeReadingBundle:Default:newAction')) }} 

而且控制器

public function newAction(Request $request) 
    { 
     $message = new Message(); 
     $form = $this->createFormBuilder($message) 
     ->add('body', 'text') 
     ->add('save', 'submit') 
     ->getForm(); 

     $form->handleRequest($request); 

     return $this->render('AcmeReadingBundle:Default:new.html.twig', array(
      'form' => $form->createView(), 
     )); 
    } 

而且new.html.twig文件

{{ form(form) }} 

我不斷收到此錯誤:

An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in AcmeReadingBundle:Default:show.html.twig at line 18. 

回答

30

解決方案:

你試圖渲染使用controller()代替控制器/動作一個模板( '... new.html.twig')!

改變你的render功能:

{{ render(controller('AcmeReadingBundle:Default:new')) }} 

通知:在方法名稱中沒有 「......行動」)


提示:

的_fragment如果指定的控制器名稱有問題,則大多會拋出異常。

即錯誤控制器/操作名稱通常是此例外的原因。


延伸閱讀:

看看this cookbook article

+0

我試過用這段代碼和即時獲得相同的結果 –

+0

對不起,應該是新的,而不是newAction – nifr

+0

我的控制器被稱爲newAction,如在代碼示例。我稱它爲AcmeReadingBundle:默認:動作 –

0

我同意@nifr 您正在嘗試使用controller()而不是控制器/操作呈現模板('... new.html.twig')!

變化渲染功能:

{{渲染(控制器( 'AcmeReadingBundle:默認:新'))}}

(注意:沒有 「......行動」 的方法名)

Below is more if above solution is not giving you solution.

  1. 檢查控制器中定義的功能是否是公共功能。在我的情況下,我已經定義了保護。

感謝,

Anirudh蘇德。