ihs*_*san 3 symfony twig symfony-2.1
我目前能够在 symfony2 控制器中获取货币符号
$formatter = new \NumberFormatter($this->getRequest()->getLocale(),\NumberFormatter::CURRENCY);
$symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
Run Code Online (Sandbox Code Playgroud)
然后将其传递给树枝。
但是,因为我需要在许多 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';
}
}
Run Code Online (Sandbox Code Playgroud)
服务:
acme.twig.acme_extension:
class: Acme\DemoBundle\Twig\AcmeExtension
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
因为我需要获取 symfony2 parameters.ini 中当前定义的语言环境并将其传递到 twig 函数中,所以我定义了一个全局 twig 值:
twig:
globals:
locale: %locale%
Run Code Online (Sandbox Code Playgroud)
最后在树枝模板中:
{{ currencySymbol(locale) }}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3273 次 |
最近记录: |