1

プロジェクトに ZF2 を使用しています。そして、これは電子商取引サイトです。だから私は通貨を扱っています。

ZF2 には、という名前のビュー ヘルパーがあります。currencyFormat()

私はトルコ出身なので、主な通貨形式は TRY (これはトルコ リラの ISO コードです) です。しかし、トルコでは TRY を通貨アイコンとして使用していません。アイコンは、USD は「$」、「EUR」は €、トルコ リラ (TRY) は「TL」です。

したがって、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 functiona を実行するのは面倒だと言っているのだと思います。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 に答える