Twig过滤器链接和优先级

时间:2015-09-23 12:17:57

标签: php symfony twig

我有困难试图为多个Twig过滤器表达式找到正确的语法。

我有一个名为 floatVar 的var,它并不总是被定义。

如果已定义,我想将此浮点数截断为第三位数。 如果没有定义,我想设置一个空字符串。

我无法找到正确的语法:

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

有人能指出我正确的方向吗?有没有办法让paranthesis明确表达优先权? 任何帮助或相关主题的链接将不胜感激。

祝你有个美好的一天。

2 个答案:

答案 0 :(得分:1)

试试这个

{{yourelement!= null? yourelement | round(3,' floor'):'' }}

答案 1 :(得分:1)

正确的顺序是:

{{ floatVar|default(0)|number_format(3, '.','') }}
  • 默认值(0):首先确保floatVar具有默认值(即使未定义)
  • number_format(3,'。',''):然后将其格式化

但是,如果未定义floatvar,则会打印0.000。

如果您想在一行中执行此操作,则应考虑创建自定义树枝扩展名:http://symfony.com/doc/current/cookbook/templating/twig_extension.html

编辑: 按照@Pierre Olivier的回答,您应该尝试:

{{ floatVar is defined ? floatVar|number_format(3, '.','') : '' }}

yourelement != null如果您没有定义,则会引发错误)