Twig 扩展不适用于 Symfony 2
Twig Extension doesn't work with Symfony 2
我创建了一个 Twig 扩展来以不同的货币格式显示金额,例如:印度、美元等。
我正在按照 Symfony2 指南的建议进行操作。
NameSpace/AccountBundle/Extension/AccountExtension.php
namespace Edu\AccountBundle\Extension;
use Symfony\Component\HttpKernel\KernelInterface;
class AccountTwigExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'get_money_indian_format' => new \Twig_Filter_Method($this, 'get_money_indian_format'),
);
}
function get_money_indian_format($amount, $suffix = 1) {
setlocale(LC_MONETARY, 'en_IN');
if (ctype_digit($amount) ) {
// is whole number
// if not required any numbers after decimal use this format
$amount = money_format('%!.0n', $amount);
} else {
// is not whole number
$amount = money_format('%!i', $amount);
}
if (!$suffix) {
return $amount;
} else {
return $amount;
}
return $amount;
}
public function getName()
{
return 'account_twig_extension';
}
}
已在 app/config/services.yml
中注册:
account.twig.extension.accounttwigextension:
class: AccountBundle\Extension\AccountTwigExtension
tags:
- { name: twig.extension }
当我在 twig 文件中使用它时:
{{ 50000 | get_money_indian_format }}
我收到以下错误:
过滤器 get_money_indian_format
在 EduAccountBundle:Ledger:showLedgers.html.twig
中不存在
如果我按原样复制/粘贴您的代码,我会收到错误消息,因为您的扩展名是
Edu\AccountBundle\ExtensionAccountTwigExtension
而在您的服务定义中,您将其称为
AccountBundle\ExtensionAccountTwigExtension
如果我修复命名空间,一切都会按预期工作。
我创建了一个 Twig 扩展来以不同的货币格式显示金额,例如:印度、美元等。
我正在按照 Symfony2 指南的建议进行操作。
NameSpace/AccountBundle/Extension/AccountExtension.php
namespace Edu\AccountBundle\Extension;
use Symfony\Component\HttpKernel\KernelInterface;
class AccountTwigExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'get_money_indian_format' => new \Twig_Filter_Method($this, 'get_money_indian_format'),
);
}
function get_money_indian_format($amount, $suffix = 1) {
setlocale(LC_MONETARY, 'en_IN');
if (ctype_digit($amount) ) {
// is whole number
// if not required any numbers after decimal use this format
$amount = money_format('%!.0n', $amount);
} else {
// is not whole number
$amount = money_format('%!i', $amount);
}
if (!$suffix) {
return $amount;
} else {
return $amount;
}
return $amount;
}
public function getName()
{
return 'account_twig_extension';
}
}
已在 app/config/services.yml
中注册:
account.twig.extension.accounttwigextension:
class: AccountBundle\Extension\AccountTwigExtension
tags:
- { name: twig.extension }
当我在 twig 文件中使用它时:
{{ 50000 | get_money_indian_format }}
我收到以下错误:
过滤器 get_money_indian_format
在 EduAccountBundle:Ledger:showLedgers.html.twig
如果我按原样复制/粘贴您的代码,我会收到错误消息,因为您的扩展名是
Edu\AccountBundle\ExtensionAccountTwigExtension
而在您的服务定义中,您将其称为
AccountBundle\ExtensionAccountTwigExtension
如果我修复命名空间,一切都会按预期工作。