【问题标题】:Magento price format without rounding the number不四舍五入的 Magento 价格格式
【发布时间】:2013-03-14 12:42:01
【问题描述】:

我有以下价格

$price = 7.358;

我想要将其格式化为小数点后两位后的以下结果

$result = 7.35 但不是以下

$结果 = 7.36;

我如何在 Magento 中做到这一点。

谢谢

【问题讨论】:

    标签: magento


    【解决方案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,除了精度之外,您对其没有任何影响。所以在这一切发生之前,你必须在 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 模型重写”。

    【讨论】:

      【解决方案2】:

      根据您希望这种情况发生的位置,您可以修改显示模板,而不是使用核心代码。即,如果在目录/产品视图页面上,您可以将目录/产品/价格.phtml 移动到您的主题文件夹并创建格式化函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多