无法覆盖magento核心配置模型Mage_Core_Model_Config。我有magento 1.9.2.1。这里是配置文件. xml
<global>
<helpers>
<peexl_customflatrate>
<class>Peexl_CustomFlatrate_Helper</class>
</peexl_customflatrate>
</helpers>
<models>
<peexl_customflatrate>
<class>Peexl_CustomFlatrate_Model</class>
</peexl_customflatrate>
<core>
<rewrite>
<config>Peexl_CustomFlatrate_Core_Config</config>
</rewrite>
</core>
字符串
Peexl/CustomFlatrate/Model/Core/Config.php
class Peexl_CustomFlatrate_Model_Core_Config extends Mage_Core_Model_Config
{
}
型
什么都没发生:(
2条答案
按热度按时间jgzswidk1#
是的,你不能。
Magento的类重写系统可以工作,因为几乎所有的Magento对象都是通过
Mage::getModel
静态类示例化的。字符串
Magento的类重写将无法替换已示例化的类。Magento需要在没有重写系统的情况下示例化一些对象。Magento需要在没有重写系统的情况下示例化这些类,因为它们是实现重写系统的实际类。
这些课程包括
型
如果你想修改这个类的行为,你有两个选择。
首先,可以创建本地代码池重写
型
使用
app/code/copy/Mage/Core/Model/Config.php
中的类的精确副本,加上您的更改。这样做的缺点是您需要在升级Magento时手动更新该类,如果您不小心,您可能会破坏核心代码所依赖的功能。其次,Magento 1的现代版本包含了一个可选配置类的选项。
型
可以看到Magento在
$options
数组的config_model
键中查找类名。型
这比本地代码池覆盖稍微好一点,因为
Package_Module_Model_Config
可以扩展基本配置类,并且您可以只更改您需要的内容。但是,它确实依赖于您维护自己的index.php
引导文件,这使得它不适合重新分发。希望能帮上忙!
krcsximq2#
首先,你的重写不会工作,因为它是以错误的方式设置的。Rewrite. xml中的重写类名与文件中的类名不匹配,缺少“Model”一词。它应该是:
字符串