我有以下价格
$价格 = 7.358;
我想要将其格式化为小数点后两位数后的以下结果
$result = 7.35 但不是以下
$结果 = 7.36;
我怎样才能在 Magento 中做到这一点。
谢谢
我有以下价格
$价格 = 7.358;
我想要将其格式化为小数点后两位数后的以下结果
$result = 7.35 但不是以下
$结果 = 7.36;
我怎样才能在 Magento 中做到这一点。
谢谢
您将不得不重写Mage_Directory_Model_Currency。这个类有一个format()
方法。
原始版本:
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
}
如果您遵循对 formatPrecision 的调用,您将看到舍入归结为Zend_Currency
,除了精度之外,您对其没有任何影响。因此,在所有这些发生之前,您必须在 format 方法中四舍五入。
更新后的版本:
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
$price = bcdiv($price, 1, 2);
return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
}
请注意,您永远不应该编辑核心文件。进行此更改的一种快速而肮脏的方法是将文件复制app/code/core/Mage/Directory/Model/Currency.php
到app/code/local/Mage/Directory/Model/Currency.php
并修改此副本。但推荐的“Magento 方式”是重写类。如果您不知道该怎么做,请查看“Magento 模型重写”。
根据您希望发生这种情况的位置,您可以修改显示模板而不是使用核心代码。即,如果在目录/产品视图页面上,您可以将目录/产品/价格.phtml 移动到您的主题文件夹并创建格式化功能。