вы можете попробовать следующее:
setTimeout(function(){printer(name)}, 1000)
Попробуйте следующее:
{% extends intro == 'false'
? 'UdoWebsiteBundle::layout.html.twig'
: 'UdoWebsiteBundle::layout_true.html.twig' %}
Идея взята здесь: http://jorisdewit.ca/2011/08/27/extending-different-layouts-for-ajax-requests -в-прут-Symfony2 /
Вы не можете расширять несколько шаблонов, поэтому у вас есть ошибка, если вы этого хотите, вам нужно нажать их в массиве, как показано ниже.
{% extends ['MyAppCustomBundle::Layout/layout.html.twig', 'FOSUserBundle::layout.html.twig'] %}
Но для этого вам понадобится версия Twig версии 1.2. документация о твигах
Все это имеет смысл делать либо этот шаблон, либо этот шаблон.
Но позвольте мне описать еще одну ситуацию. У вас есть форма профиля и форма, в которой пользователи могут загружать личные документы, связанные с профилем. Поскольку форма профиля уже очень длинная, документы переместились в новую форму.
Все отлично работает. Теперь мы хотим использовать вкладки bootstrap для создания профиля | Документы для удобства использования.
Теперь я знаю, потому что мы используем две отдельные формы, если вы отправляете документы, изменения в профиле не сохраняются и наоборот.
Я добавил форму документа в tab с помощью
<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 является ложным.
Когда viewOnly является ложным, он должен расширить базовый шаблон, используемый всеми другими шаблонами, но если это правда, я хочу только показать это:
{{ 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, но ничего не происходит при сбое?
Ответ из официальной документации :
Условное наследование
Поскольку имя шаблона для родителя может быть любым допустимым выражением Twig, это возможно сделать механизм наследования условным:
{% extends standalone ? "minimum.html" : "base.html" %}
В этом примере шаблон расширит шаблон макета «minimum.html», если отдельная переменная будет равна true, а в противном случае - «base.html».
blockquote>
{% extends app.request.isXmlHttpRequest ? '::/ajax.html.twig' : '::/base-3col.html.twig' %}
. Я просто предпочитаю проводить этот тест в контроллере даже в классе SuperController, который расширяется каждым контроллером.
– svassr
30 August 2013 в 15:32
Чтобы поддерживать его аккуратно, вы должны использовать поддержку динамического наследования Twig, используя переменную, определенную в вашем контроллере, в качестве базового шаблона:
{% extends parent_template_var %}
Если переменная оценивается объектом Twig_Template, Twig будет используйте его как родительский шаблон.
Определите parent_template_var в вашем контроллере:
if($intro == 'false')
$parent_template_var = 'UdoWebsiteBundle::layout.html.twig';
}else{
$parent_template_var = 'UdoWebsiteBundle::layout_true.html.twig';
}
return $this->render('::/action.html.twig', array('parent_template_var' => $parent_template_var ));