在Twig中保持领先0

VaN*_*VaN 14 symfony twig

在我的数据库中,我有一个包含以下数据的字段:000010(类型为整数)

在我的twig tpl中,我想显示它,然后我做:{{spend.documentName}}

但浏览器显示"10".好像Twig是自动执行我的数据修剪.我试过{{spend.documentName | raw}}但它不起作用.我在Google上找不到关于如何使用Twig保持领先0的任何内容.

有谁知道怎么办?

gri*_*eau 29

我认为你必须强制格式化(因为你的类型是整数).

您可以使用格式过滤器:

{{ "%06d"|format(spending.documentName) }}
Run Code Online (Sandbox Code Playgroud)

或者更好地创建一个枝条扩展(http://symfony.com/doc/current/cookbook/templating/twig_extension.html):

public function strpad($number, $pad_length, $pad_string) {
    return str_pad($number, $pad_length, $pad_string, STR_PAD_LEFT);
}
Run Code Online (Sandbox Code Playgroud)

你的模板更清晰:

{{ spending.documentName | strpad(6,'0') }}
Run Code Online (Sandbox Code Playgroud)

  • 你在ORM上使用(如Doctrine)吗?如果是这样的话,我认为这是修剪的ORM,而不是树枝 (2认同)
  • 是的,我将我的属性类型从整数更改为字符串:)可能不是最好的解决方案,但它确实有效.实际上,这个属性是一个字符串,因为它代表一个文档名称.对于s字符串类型,doctrine不会在db插入期间修剪前导0也不会对水合作用进行修剪. (2认同)

Ali*_*ixB 9

您是否尝试使用格式过滤器?

因为placeholders follows the sprintf notation你应该能够转换

sprintf('%06d', $integer); 在PHP中

{{ '%06d'|format($integer) }}在树枝.


小智 8

来这里有点晚了,但遇到了同样的事情。

使用 twig 3.x,您可以使用:

{{your.number | format_number({min_integer_digit:'2'})}}
Run Code Online (Sandbox Code Playgroud)