我尝试使用Twig Extension:
<?php
class Twig_Extensions_Extension_Number extends Twig_Extension
{
/**
* Returns a list of filters.
*
* @return array
*/
public function getFilters()
{
return array('number' => new Twig_Filter_Function('twig_number_filter'));
}
/**
* Name of this extension
*
* @return string
*/
public function getName()
{
return 'Number';
}
}
function twig_number_filter($number, $decimals = 0, $dec_point = '.', $thousands_sep = ',')
{
return number_format($number, $decimals, $dec_point, $thousands_sep);
}
我在我的包中创建了一个文件夹Twig / Extension,并将Extension放在里面。
然后我修改了services.yml文件以使用它:
services:
project.twig.extension:
class: App\AppBundle\Twig\Extension\NumberExtension
tags:
- { name: twig.extension }
并尝试在某些视图中使用过滤器:
{{ 50|number(2, ".", ",") }}
但是我收到了以下错误:
致命错误:调用未定义的函数twig_number_filter() C:\瓦帕\ WWW \ MyApp的\应用\缓存\ dev的\树枝\德\立方厘米\ 18a233a6ed21bfc26e40b6654c9c.php 在第83行
有什么想法吗?
答案 0 :(得分:1)
尝试使用getFilters
方法:
public function getFilters()
{
return array('number' => new \Twig_Filter_Method($this, 'twig_number_filter'));
}
Twig_Filter_Function
正在调用全局命名空间中的函数,传递Twig_Filter_Method
的{{1}}将调用您的类方法。