内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/7578526/twig-selecting-certain-blocks-and-rendering-them
我将twig模板引擎整合到 PHP 应用程序中.特别是,我想使用twig引擎来呈现表单.
看看symfony2如何使用twig渲染窗体小部件,它们有一个巨大的模板文件,其中包含所有的widget,如下所示:
(...) {% 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”块,然后将其插入到不同的模板中以呈现整个表单,该怎么办?
原来,应该使用$template-> renderBlock(‘blockname’,array(‘test’=>’test’));代替.这将使twig渲染该块,然后返回一个包含该块的标记的字符串.然后可以使用echo显示它或将其插入到其他模板中.
完整例子:
$loader = new \Twig_Loader_Filesystem(array('/my-template-root')); $twig = new \Twig_Environment($loader, array('debug' => true)); $template = $twig->loadTemplate('view\form_div_layout.html.twig'); $result = $template->renderBlock('blockname', array('test' => 'test')); echo $result;
代码日志版权声明:
翻译自:http://stackoverflow.com/questions/7578526/twig-selecting-certain-blocks-and-rendering-them
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- React 的几种条件渲染以及选择
- 如何选择正确的后端渲染框架:Next, Nuxt, Nest?
- Octane渲染入门-渲染设置图文版
- 通过分析 WPF 的渲染脏区优化渲染性能
- 选择/取消选择所有按钮以选择闪亮变量
- React 服务器端渲染和客户端渲染效果对比
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。