Twig выводит элементы формы Symfony до того, как я вызову form_row () из-за использования parent () и блочной структуры - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть два файла веток - index и layout.Я пытаюсь вывести форму в index.

Из-за структуры шаблонов для этого сайта я вынужден обернуть форму вокруг внешнего вида макета, как показано ниже.

Это файл шаблона:

{# 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 %}

index перезаписывает блок main, добавляет форму, затем вызывает в ней основной родительский контент.Родительский контент содержит блок с именем mainContent, в который я затем добавляю элементы формы.

Единственная проблема заключается в том, что у Symfony / Twig есть другие идеи, и они выводят все мои строки до blockMain, поэтому мои вызовыform_row там просто игнорируются, так как соответствующие элементы уже отражены.

Как я могу остановить это и вывести свою форму в blockMain, но обернуть ее вокруг основного блока?

Извинения, если это должно бытьдубликат - я изо всех сил пытаюсь найти подходящие ключевые слова для этого.Хотя я могу видеть, что происходит (вроде), на самом деле я не знаю, как называется это поведение.

1 Ответ

0 голосов
/ 20 ноября 2018

Оказывается, все гораздо сложнее, чем я думал - я просто перепутал form() и form_start().

Все работает как надо, как только я добавляю form_start() вместо form().

...