gpt4 book ai didi

symfony - 如何在twig,symfony2中获取货币符号?

转载 作者:行者123 更新时间:2023-12-02 04:09:54 24 4
gpt4 key购买 nike

我目前可以在 symfony2 Controller 中获取货币符号

$formatter = new \NumberFormatter($this->getRequest()->getLocale(),\NumberFormatter::CURRENCY);
$symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);

然后将其传递给twig。

但是,因为我需要在许多twig模板中获取这个货币符号,所以在相应的 Controller 中插入这段代码并不是一件令人愉快的事情。那么,有没有更好/更简单的方法可以直接在 twig 中执行此操作?

谢谢。

最佳答案

这是我创建自定义 Twig 函数的方法

namespace Acme\DemoBundle\Twig;

class AcmeExtension extends \Twig_Extension
{
public function getFunctions() {
return array(
'currencySymbol' => new \Twig_Function_Method($this, 'currencySymbolFunction'),
);
}

public function currencySymbolFunction($locale) {
$locale = $locale == null ? \Locale::getDefault() : $locale;
$formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
$symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);

return $symbol;
}

public function getName() {
return 'acme_extension';
}
}

服务:

acme.twig.acme_extension:
class: Acme\DemoBundle\Twig\AcmeExtension
tags:
- { name: twig.extension }

因为我需要获取 symfony2parameters.ini 中当前定义的语言环境并将其传递到 twig 函数中,所以我定义了一个全局 twig 值:

twig:
globals:
locale: %locale%

最后在 Twig 模板中:

{{ currencySymbol(locale) }}

关于symfony - 如何在twig,symfony2中获取货币符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com