1

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

在 ZF2 中有一个名为的视图助手currencyFormat()

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

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

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

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

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

4

2 回答 2

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',
              ),
         );
     }
}
于 2013-02-26T23:27:15.240 回答
0

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

所以我认为 ZF 的输出是正确的。

于 2013-02-26T23:14:45.233 回答