代码之家  ›  专栏  ›  技术社区  ›  Bananaapple

由于使用了parent()和block结构,Twig在调用form_row()之前输出Symfony表单元素

  •  0
  • Bananaapple  · 技术社区  · 6 年前

    我有两个树枝档案- index layout .我正在尝试以 指数 .

    由于这个网站模板的结构方式,我不得不将表单包装在布局的最外面,如下所示。

    这是一个模板文件:

    {# layout.html.twig: #}
    {% block main %}
        <!-- 
            there is actually a lot more going on here 
            and simply moving it into index would lead 
            to a lot of duplication in the html structure
        -->
        <main> 
            {% block mainContent %}
            {% endblock %}
        </main>
    {% endblock %}
    

    这是实现模板的文件:

    {# index.html.twig: #}
    {% extends 'layout.html.twig' %}
    
    {% block main %}
        {{ form(form) }}
            {{ parent() }}  
        {{ form_end(form) }}
    {% endblock %}
    
    {% block mainContent %}
        {{ form_row(form.my_field) }}
    {% endblock %}
    

    指数 覆盖 main 块,添加表单,然后在表单中调用主父内容。父内容包含一个名为 mainContent 然后我将表单元素添加到其中。

    唯一的问题是Symfony/Twig有其他的想法,并且实际上输出了我之前的所有行 blockMain 所以我打电话给 form_row 在这里,由于相应的元素已经被回响,所以它们被简单地忽略了。

    我怎样才能阻止它,并在blockMain中输出我的表单,但将其环绕在blockMain中?

    抱歉,如果这是一个重复的-我正在努力找到合适的关键字。虽然我能看到发生了什么(某种程度上),但实际上我不知道这种行为叫什么。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bananaapple    6 年前

    事实证明,这比我想象的要简单得多——我只是搞混了 form() form_start() .

    我一加进去,一切都正常运转 表格_start() 代替 表格( .