我正在将树枝模板引擎集成到 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 blocks 来获取所有块:
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”块,然后将其插入到不同的模板中以呈现整个表单?