我必须重写核心缓存模型。但这是行不通的。我解决这个问题的第一次尝试是尝试用另一个模型重写...... 在我的 config.xml 中,我声明了以下内容
<global>
<models>
<core>
<rewrite>
<**layout**>MyCompany_MyModule_Model_Core_Cache</**layout**>
</rewrite>
</core>
</models>
....
在我的课堂上,我死于构造函数中。
这非常有效! 所以我重写模型的可能是正确的。
但是如果我不在 xml 中使用布局节点而是使用缓存节点,则这不起作用。
所以我的尝试如下,但这不起作用:
<global>
<models>
<core>
<rewrite>
<cache>MyCompany_MyModule_Model_Core_Cache</cache>
</rewrite>
</core>
</models>
....
我现在的问题:有没有办法重写/重载“缓存核心模型”???
缓存将在加载模块配置(config.xml)之前初始化。缓存模型是用 Mage::getModel 实例化的,它在注册表中缓存模型名称。 因此,以后所有获取自定义缓存模型的尝试也将失败。
解决方案:将此重写语句放在etc/local.xml中。这有点脏,因为 local.xml 应该只包含与模块无关的内容。但这比将核心文件复制到本地要好。
我有同样的问题,但我的解决方案与你的有点不同;-)
Magento 将先从 /app/etc/*.xml 加载 XML 文件(此文件不会被缓存),然后再加载 magento 中的其他内容。 所以我在这里创建了自己的文件“cache.xml”,内容是
<?xml version="1.0"?>
<config>
<global>
<models>
<core>
<rewrite>
<cache>MyCompany_MyModule_Model_Core_Cache</cache>
</rewrite>
</core>
</models>
</global>
</config>
在 1.6、1.7 和 1.8 中完美运行
我也在尝试做同样的事情,但我认为这是不可能的。如果您在方法中 var_dump 出 $this->_xml->group->models: getGroupedClassName (app/code/core/Mage/Core/Model/Config.php) 您会注意到您的重写尚不可用,因此为什么它被跳过。
如果您尝试覆盖translate或layout:your_class_model,您会注意到$this->_xml...转储初始核心类(没有重写),并且您会看到您的重写远远超出了核心/缓存。因此,它可能被覆盖,但该类已经实例化、设置和使用;所以它真的不会触发任何东西。
因此我认为不可能覆盖核心/缓存。您必须将其移至应用程序/代码/本地。可怜。