我目前正在twig中编写一些扩展,但是我很难决定为什么要将某个扩展实现为标记或函数。
twig'sdocumentation列出了以下两个结构及其作用:{{ }}
:用于打印表达式求值的结果;{% %}
:用于执行语句。
我正计划实现与symfony2的embedded controllers类似的东西。
为什么该功能被实现为:
{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}
因为嵌入式控制器函数应该为请求的控制器返回一个完全呈现的模板,所以一个函数不是更合适吗?
render("AcmeDemoBundle:Demo:fancy", { 'name': name, 'color': 'green' });
最佳答案
我对同一个问题很感兴趣。由你决定。
如果使用{{ }}
,则可以对输出应用筛选器:{{ render()|upper }}
。如果您使用{% %}
扩展的输出将不会被“消毒”(但您始终可以将{{ }}
与array('is_safe' => array('all')
一起使用)。render
是一个重要的结构。它不仅仅是一个类似于{{ path() }}
的函数,您可以在表达式中调用:{{ host ~ path() }}
。