Search code examples
symfonytwigcurrency

Displaying currency symbol in twig


How can I display the currency symbol in twig? I saved the numeric value of the symbol like:

for EURO : €
for DOLLAR: $

When I render these values, & is converted to & and the currency symbol does not show. Any idea will be greatly appreciated. Thank you.


Solution

  • To do it well, you've to add a function or a filter which is called as a helper to render currency symbols within your twig templates.

    To use the following function,

    {{ currency('en_US') }}
    

    You've to add a twig extension as follow,

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

    You've then to add a currency function,

    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';
        }
    }