我目前正在使用twig编写一些扩展,但我无法确定为什么某个扩展应该作为标记或函数实现。
Twig的documentation列出了以下2个结构及其作用:
{{ }}
:用于打印表达式评估的结果; {% %}
:用于执行语句。我计划实现与symfony2 embedded controllers类似的东西。
为什么该功能实现为:
{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}
由于嵌入式控制器功能应该为请求的控制器返回一个完全渲染的模板,函数不是更合适吗?
render("AcmeDemoBundle:Demo:fancy", { 'name': name, 'color': 'green' });
答案 0 :(得分:2)
我在同一个问题上受到了热烈的关注。由你来决定。
如果您使用{{ }}
,则可以对输出应用过滤器:{{ render()|upper }}
。如果您使用{% %}
,则您的扩展程序的输出将不会被“清理”(但您始终可以{{ }}
使用array('is_safe' => array('all')
)。
render
是一个重要的结构。您可以在表达式{{ path() }}
中调用{{ host ~ path() }}
之类的函数。