繁体   English   中英

使用Symfony2在Twig模板中呈现表单

[英]Rendering a Form in a Twig Template with Symfony2

我有一个基本的Twig模板,在Twig块的页面顶部有一个搜索栏表单。 我后来在另一个块上命名为“内容”,我的子页面填写完整。 目前,我的基本模板如下所示:

{% block admin_bar %}
    <div id="search">
        <form action="{{ path('search') }}" method="post" {{ form_enctype(search_form) }}>
            {{ form_widget(search_form.term) }}
            {{ form_widget(search_form.type) }}
            {{ form_widget(search_form.pool) }}
            {{ form_widget(search_form._token) }}
            <input type="submit" value="Search" />
        </form>
    </div>
{% endblock %}

{% block content %}
{% endblock %}

但是,在尝试渲染子模板时,我需要传递search_form变量。 无论如何(没有自己写出HTML标签)我可以避免创建这个search_form变量并在每次想要渲染子视图时传递它? 我正在将Twig与Symfony2结合使用。

谢谢!

嵌入式控制器是您所需要的。 将您的admin_bar块放入单独的文件中:

{# src/Acme/AcmeBundle/Resources/views/Search/index.html.twig #}
<div id="search">
    <form action="{{ path('search') }}" method="post" {{ form_enctype(search_form) }}>
        {{ form_widget(search_form.term) }}
        {{ form_widget(search_form.type) }}
        {{ form_widget(search_form.pool) }}
        {{ form_widget(search_form._token) }}
        <input type="submit" value="Search" />
    </form>
</div>

为此模板创建控制器:

class SearchController extends Controller
{
    public function indexAction()
    {
        // build the search_form

        return $this->render('AcmeAcmeBundle:Search:index.html.twig', array('search_form' => $searchForm));
    }
}

然后将控制器嵌入到您的原始模板中:

{% block admin_bar %}
    {% render "AcmeAcmeBundle:search:index" %}
{% endblock %}

{% block content %}
{% endblock %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM