【发布时间】:2013-03-14 12:42:01
【问题描述】:
我有以下价格
$price = 7.358;
我想要将其格式化为小数点后两位后的以下结果
$result = 7.35 但不是以下
$结果 = 7.36;
我如何在 Magento 中做到这一点。
谢谢
【问题讨论】:
标签: magento
我有以下价格
$price = 7.358;
我想要将其格式化为小数点后两位后的以下结果
$result = 7.35 但不是以下
$结果 = 7.36;
我如何在 Magento 中做到这一点。
谢谢
【问题讨论】:
标签: 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 移动到您的主题文件夹并创建格式化函数。
【讨论】: