ZF2货币格式

时间:2013-02-26 22:39:59

标签: php zend-framework2 currency

我在项目中使用ZF2。这是一个电子商务网站。所以我正在处理货币。

在ZF2中有一个名为currencyFormat()

的视图助手

我来自土耳其,因此我的主要货币格式为TRY(这是土耳其里拉的ISO代码)。但在土耳其,我们不使用TRY作为货币图标。美元的图标为“$”,土耳其里拉(TRY)的图标为“EUR”和“TL”。

因此,当我为TRY格式化货币时,我在视图脚本中这样做:

<?php
echo $this->currencyFormat(245.40, 'TRY', 'tr_TR');
?>

此代码的结果为“245.40 TRY”。但它必须是“245.40 TL

有没有办法解决这个问题?我不想使用替换功能。

2 个答案:

答案 0 :(得分:2)

我猜你何时说I do not want to use replacement function你的意思是每次打电话给帮助者时做str_replace都很费力。解决方案是用你自己的帮助器替换帮助器。这是一个快速的如何

首先创建一个自己的帮助程序,扩展现有的帮助程序并在必要时处理替换...

<?php
namespace Application\View\Helper;

use Zend\I18n\View\Helper\CurrencyFormat;

class MyCurrencyFormat extends CurrencyFormat
{
    public function __invoke(
        $number,
        $currencyCode = null,
        $showDecimals = null,
        $locale       = null
    ) {
       // call parent and get the string
       $string = parent::__invoke($number, $currencyCode, $showDecimals, $locale);
       // format to taste and return
       if (FALSE !== strpos($string, 'TRY')) {
           $string = str_replace('TRY', 'TL', $string);
       }
       return $string;
    }
}

然后在Module.php中,实现ViewHelperProviderInterface,并为其提供帮助程序的详细信息

//Application/Module.php
class Module implements \Zend\ModuleManager\Feature\ViewHelperProviderInterface
{

     public function getViewHelperConfig()
     {
         return array(
             'invokables' => array(
                  // you can either alias it by a different name, and call that, eg $this->mycurrencyformat(...)
                  'mycurrencyformat'  => 'Application\View\Helper\MyCurrencyFormat',
                  // or if you want to ALWAYS use your version of the helper, replace the above line with the one below, 
                  //and all existing calls to $this->currencyformat(...) in your views will be using your version
                  // 'currencyformat'  => 'Application\View\Helper\MyCurrencyFormat',
              ),
         );
     }
}

答案 1 :(得分:0)

截至2012年3月1日,土耳其里拉的标志为TRY。 http://en.wikipedia.org/wiki/Turkish_lira

所以我认为ZF输出正确。