来自Mage_Core的Magento覆盖模型

时间:2012-01-12 11:57:29

标签: magento model core overwrite

当我尝试从Mage_Catalog覆盖模型时(例如Mage_Catalog_Model_Product_Image)我没有问题但是当我尝试从Mage_Core(Mage_Core_Model_File_Uploader)为模型做它时它不起作用。

Mage_Core上有某种保护吗? 我不能使用观察者,所以我必须让它工作。

我的config.xml:

<models>
    <myshop>
        <class>Adrien_Myshop_Model</class>
    </myshop>
    <core>
        <rewrite>
            <file_uploader>Adrien_Myshop_Model_Core_File_Uploader</file_uploader>
        </rewrite>
    </core>
    <catalog>
        <rewrite>
            <product_image>Adrien_Myshop_Model_Catalog_Product_Image</product_image>
        </rewrite>
    </catalog>
</models>

我的新上传者模型:

class Adrien_Myshop_Model_Core_File_Uploader extends Mage_Core_Model_File_Uploader
{
    protected function _moveFile($tmpPath, $destPath)
    {
        Mage::log("custom upload");
        return parent::_moveFile($tmpPath, $destPath);
    }

}

我也将调试日志放入Mage_Core_Model_File_Uploader :: _ moveFile,当我运行脚本时,我只从Mage_Core_Model_File_Uploader获取日志。

然而,当我使用Catalog_Product_Image测试它时,我正确地获得了两个调试日志。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

如果grep该类名的源代码,您可以看到它是通过new直接在PHP中调用的,因此无法重写。

如果必须重写此类,则需要将其复制到本地代码池并在其中进行更改,并注意到在升级时需要合并新的更改申请。