Twig: Выбор определенных блоков и их рендеринг

я интегрирую движок шаблонов twig в приложение PHP. В частности, я хотел бы использовать движок twig для рендеринга форм.

Посмотрев на то, как symfony2 использует twig для рендеринга виджетов формы, у них есть огромный файл шаблона, который содержит все такие виджеты:

(...)
{% block password_widget %}
{% spaceless %}
    {% set type = type|default('password') %}
    {{ block('field_widget') }}
{% endspaceless %}
{% endblock password_widget %}

{% block hidden_widget %}
    {% set type = type|default('hidden') %}
    {{ block('field_widget') }}
{% endblock hidden_widget %}

{% block email_widget %}
{% spaceless %}
    {% set type = type|default('email') %}
    {{ block('field_widget') }}
{% endspaceless %}
{% endblock email_widget %}

{% block test_widget %}
{% spaceless %}
   <div>
     {{test}}
   <div>
{% endspaceless %}
{% endblock test_widget %}

(...)

У меня есть вопрос, как я могу «захватить» блоки из этого шаблона и отобразить их?

Пока что я могу загрузить шаблон и вызвать блоки get, чтобы получить все блоки:

twig = new \Twig_Environment($loader, array('cache' => 'cache'));
$template = $twig->loadTemplate('view\form_div_layout.html.twig');
//var_dump($template->getBlocks()); //try getting all blocks
$template->displayBlock('test_widget', array('test' => 'test'));
echo $template->render();

К сожалению, в этом случае я не могу отобразить только блок test_widget. Что мне делать, чтобы получить блок test_widget из шаблона, а затем вставить его в другой шаблон для визуализации всей формы?

19
задан fyrye 3 August 2016 в 16:37
поделиться