从Twig扩展返回模板


Returning a Template from a Twig Extension

我有一个表单,放在我的网站的许多页面上,我想写一个小树枝扩展来构建和处理表单。我认为,如果注入Twig模板服务,并使用呈现的表单呈现一个模板,就可以工作了。但我得到了一个循环参考。我的问题是如何从扩展返回模板?

假设你有一个动作的形式是:

public function formAction()
{
    //Code goes here with no difference from a regular action
    return $this->render('MyBundle:Base:form.html.twig', array('form' => $form->createView()));
}

假设MyBundle:Base:form.html.twig是一个带有呈现表单所需的所有标记的Twig模板。假设控制器在MyBundle:Form:form中,每个页面都有一个模板(但表单模板除外),MyBundle:Base:template.html.twig。在该模板中,在您希望的任何地方添加以下行:

{{ render(controller('MyBundle:Form:form')) }}

这样你就可以在你所有的页面中"注入"任何你想要的方法。然后,您可以将表单的动作设置为任何控制器动作,以便它可以正确处理它。