Twig 过滤器链和优先级
Twig filter chaining and priorities
我在尝试为多个 Twig 过滤器表达式找到正确的语法时遇到困难。
我有一个名为 floatVar 的变量,它并不总是被定义。
如果定义了,我想把这个浮点数截断到第三位。
如果未定义,我想设置一个空字符串。
我找不到正确的语法:
floatVar|number_format(3, '.','')|default('') // generates a Twig_Error_Runtime exception
floatVar|default('')|number_format(3, '.','') // output "0" in every case
(floatVar|number_format(3, '.',''))|default('') // generates a Twig_Error_Runtime exception
有人能给我指出正确的方向吗?有没有办法用括号来明确表达优先级?
对相关主题的任何帮助或 link 将不胜感激。
祝你有美好的一天。
试试这个
{{ yourelement != null ? yourelement|round(3, 'floor') : '' }}
正确的顺序是:
{{ floatVar|default(0)|number_format(3, '.','') }}
- default(0) :首先确保 floatVar 具有默认值(即使未定义)
- number_format(3, '.','') :然后你格式化它
然而,如果没有定义 floatvar,这将打印 0.000。
如果您想在 1 行中完成此操作,您应该考虑创建一个自定义的树枝扩展:http://symfony.com/doc/current/cookbook/templating/twig_extension.html
编辑:
按照@Pierre Olivier 的回答,您应该尝试:
{{ floatVar is defined ? floatVar|number_format(3, '.','') : '' }}
(如果未定义元素,yourelement != null
将引发错误)
我在尝试为多个 Twig 过滤器表达式找到正确的语法时遇到困难。
我有一个名为 floatVar 的变量,它并不总是被定义。
如果定义了,我想把这个浮点数截断到第三位。 如果未定义,我想设置一个空字符串。
我找不到正确的语法:
floatVar|number_format(3, '.','')|default('') // generates a Twig_Error_Runtime exception
floatVar|default('')|number_format(3, '.','') // output "0" in every case
(floatVar|number_format(3, '.',''))|default('') // generates a Twig_Error_Runtime exception
有人能给我指出正确的方向吗?有没有办法用括号来明确表达优先级? 对相关主题的任何帮助或 link 将不胜感激。
祝你有美好的一天。
试试这个
{{ yourelement != null ? yourelement|round(3, 'floor') : '' }}
正确的顺序是:
{{ floatVar|default(0)|number_format(3, '.','') }}
- default(0) :首先确保 floatVar 具有默认值(即使未定义)
- number_format(3, '.','') :然后你格式化它
然而,如果没有定义 floatvar,这将打印 0.000。
如果您想在 1 行中完成此操作,您应该考虑创建一个自定义的树枝扩展:http://symfony.com/doc/current/cookbook/templating/twig_extension.html
编辑: 按照@Pierre Olivier 的回答,您应该尝试:
{{ floatVar is defined ? floatVar|number_format(3, '.','') : '' }}
(如果未定义元素,yourelement != null
将引发错误)