我有以下价格
$ price = 7.358;
将格式化为小数后的两位数
后,我想要以下结果$ result = 7.35但不是以下
$ result = 7.36;
我怎样才能在Magento中这样做。
谢谢
答案 0 :(得分:1)
您必须重写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
除了精度之外你对它没有任何影响。因此,在发生这一切之前,您必须在格式化方法中向下舍入。
更新版本:
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模型重写”。
答案 1 :(得分:0)
根据您希望这种情况发生的位置,您可以修改显示模板,而不是使用核心代码进行修改。即,如果在目录/产品视图页面上,您可以将catalog / product / price.phtml移动到主题文件夹中并创建格式化功能。