Все это имеет смысл делать либо с этим шаблоном, либо с этим шаблоном.
Но позвольте мне описать другую ситуацию. У вас есть форма профиля и форма, где пользователи могут загружать документы, связанные с личным профилем. Поскольку форма профиля уже очень длинная, документы перешли на новую форму.
Все отлично работает. Теперь мы хотим использовать вкладки начальной загрузки, чтобы сделать профиль | Документы для удобства пользователя.
Теперь я знаю, потому что мы используем две отдельные формы, если вы отправляете документы, изменения в профиле не сохраняются, и наоборот.
Я добавил форму документа на вкладке, используя
<div role="tabpanel" class="tab-pane" id="documents">
{{ render(controller('ManyAppBundle:Document:createDocument', {'viewOnly': true})) }}
</div>
'viewOnly': true является параметром запроса и не требуется действием.
Мой вопрос теперь возникает, если на вкладке профиля отображается шаблон документа, на нем должны отображаться только виджет загрузки и отправка, где при переходе непосредственно на страницу документа должны отображаться заголовок, боковая панель и все. Итак, я попробовал
{% if not viewOnly %}
{% extends ... %}
{% endif %}
Это создавало проблемы, потому что вы не можете использовать extends в if. Как вы и предлагали в других ответах, попробуйте использовать
{% extends viewOnly == true ? ... %}
Это решило проблему Twig вплоть до выполнения кода, когда viewOnly имеет значение false.
Когда viewOnly имеет значение false, он должен расширять базовый шаблон, используемый всеми другими шаблонами, но если это правда, я хочу показать только это:
{{ form_start(form, { 'style': 'horizontal', 'col_size': 'sm' }) }}
{% if form.documents is defined %}
{{ form_row(form.documents) }}
{% endif %}
{{ form_row(form.submit, { 'attr': { 'class': 'btn btn-success' } }) }}
{{ form_end(form) }}
а теперь с верхом
{% extends viewOnly == true ? ... %}
если viewOnly становится ложным, это не удастся найти с помощью шаблона "".
Есть ли способ сказать, что этот конкретный шаблон расширяет, что будет тем же самым результатом, что не будет расширять какой-либо шаблон?
Или, альтернативно, есть способ сказать, расширять это, когда viewOnly true, но ничего не происходит при ошибке?