我从文档中创建了一个简单的Twig过滤器:
public function getFilters() {
return array(
'price' => new \Twig_Filter_Method($this, 'priceFilter'),
);
}
public function priceFilter($number, $decimals = 0, $decPoint = '.', $thousandsSep = ',')
{
$price = number_format($number, $decimals, $decPoint, $thousandsSep);
$price = '$' . $price;
return $price;
}
它已在配置中注册(因为在该文件中我有一个运行良好的功能):
services:
sybio.twig_extension:
class: %sybio.twig_extension.class%
tags:
- { name: twig.extension }
但它没有用,说The filter "price" does not exist
。怎么样?
答案 0 :(得分:4)
首先要确保你在树枝类中有这个功能
public function getName()
{
return 'acme_extension';
}
然后尝试将其更改为完整的类名以进行调试,然后您可以更改它
class: %sybio.twig_extension.class%
至class: Acme\DemoBundle\Twig\AcmeExtension
答案 1 :(得分:1)
可能你可以使用我的简单例子。
类过滤器:
namespace Project\Bundle\Twig;
class Price extends \Twig_Extension
{
public function getFilters()
{
return array(
'price' => new \Twig_Filter_Method($this, 'priceFilter'),
);
}
public function priceFilter($arg)
{
return number_format($arg);
}
public function getName()
{
return 'price';
}
}
配置:
services:
bundle.twig.price:
class: Project\Bundle\Twig\Price
tags:
- { name: twig.extension }