我在Twig模板中调用了这样的渲染(第18行)
{{ 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.
答案 0 :(得分:32)
<强>解决方案:强>
您尝试使用controller()
而不是控制器/操作呈现模板('... new.html.twig')!
将您的render
功能更改为:
{{ render(controller('AcmeReadingBundle:Default:new')) }}
(通知:方法名称中没有“...操作”)
提示强>
如果指定的控制器名称有问题,则主要抛出_fragment异常。
即。误导控制器/操作名称通常是导致此异常的原因。
进一步阅读:
答案 1 :(得分:0)
我同意@nifr 您正在尝试使用controller()而不是控制器/操作来渲染模板(&#39; ... new.html.twig&#39;)。
将渲染功能更改为:
{{render(控制器(&#39; AcmeReadingBundle:默认:新&#39;))}}
(注意:不&#34; ......行动&#34;方法名称)
如果上面的解决方案没有给你解决方案,那就更多了。
谢谢,
Anirudh Sood。