我在项目中使用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 ”
有没有办法解决这个问题?我不想使用替换功能。
答案 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输出正确。