【问题标题】:Displaying currency symbol in twig在树枝中显示货币符号
【发布时间】:2013-04-23 14:39:08
【问题描述】:

如何在 Twig 中显示货币符号?我保存了符号的数值,如:

for EURO : €
for DOLLAR: $

当我渲染这些值时,& 被转换为 & 并且货币符号不显示。任何想法将不胜感激。谢谢。

【问题讨论】:

  • 您是否考虑过使用 utf8 字符而不是 html 实体?
  • 是的。我其实已经考虑过了。只是我发现这更容易。非常感谢你的想法。

标签: symfony twig currency


【解决方案1】:

要做到这一点,您必须添加一个 function 或 filter,这被称为帮助器,以在您的树枝模板中呈现货币符号。

要使用以下功能,

{{ currency('en_US') }}

您必须添加twig extension,如下所示,

xxx.twig.your_extension:
    class: XXX\YourBundle\Twig\YourExtension
    tags:
        - { name: twig.extension }

然后你必须添加一个currency 函数,

namespace XXX\YourBundle\Twig;

class YourExtension extends \Twig_Extension
{
    public function getFunctions() {
        return array(
            'currency' => new \Twig_Function_Method($this, 'currencyFunction'),
        );
    }

    public function currencyFunction($locale) {
        $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
        $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);

        return $symbol;
    }

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

【讨论】:

  • 顺便说一句,我有点困惑。我应该为欧元符号使用什么语言环境?
  • 你应该使用与欧元国家相关的那些(fr-FR / it-IT / ...)
  • 供参考,您也可以在stackoverflow.com/a/16942190/1794894找到答案
【解决方案2】:

我想通了。渲染的时候需要用到twig的raw滤镜。

【讨论】:

  • 是的,通过使用原始过滤器,您的变量不会被转义。顺便说一句,我添加了一个更简洁的解决方案,允许您渲染任何货币符号。
【解决方案3】:

这是一个旧线程,但对于新来这里的人来说,Twig 现在有一个货币符号扩展(带有新的过滤器 |currency_symbol ),正如您在documentation 中看到的那样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    相关资源
    最近更新 更多