Magento:如何覆盖本地模块中的模型

时间:2014-04-08 15:52:05

标签: magento model module override local

我试图在本地文件夹中覆盖本地文件夹中的模块,但我不知道它是否可能。这就是我所做的。

我已经创建了/local/Mycompany/Modulename/Model/Model.php,我想覆盖/local/Othercompany/Modulename/Model/Model.php

我的model.php是:

class Mycompany_Modulename_Model_Model extends Othercompany_Modulename_Model_Model 

{ ... }

和我的config.xml

<global>
<models>
    <othercompanymodulename>
    <rewrite>
        <model>Mycompany_Modulename_Model_Model</model>
    </rewrite>
    </othercompanymodulename>
</models>

该类已被实例化为Mage :: getModel(&#39; othercompanymodulename / model&#39;)

My Mycompany_Mymodule.xml

<config>
<modules>
    <Mycompany_Modulename>
        <active>true</active>
        <codePool>local</codePool>
    <depend>
        <Othercompany_Modulename/>
        </depend>
    </Mycompany_Modulename>
</modules>

但我的模块被忽略了。是否可以在本地文件夹中覆盖位于本地文件夹中的类?我做错了什么?

3 个答案:

答案 0 :(得分:5)

打开 [magento] \ app \ etc \ modules \ Mycompany_Modulename.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Modulename>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Othercompany_Modulename/>
            </depends>
        </Mycompany_Modulename>
    </modules>
</config> 

以上代码强制Othercompany_Modulename首先加载。

希望这能帮到你

答案 1 :(得分:1)

如果我没错,你在config.xml中覆盖模型的定义中错过了下划线:

<global>
  <models>
    <othercompany_modulename>
      <rewrite>
        <model>Mycompany_Modulename_Model_Model</model>
      </rewrite>
    </othercompany_modulename>
  </models>
</global>

答案 2 :(得分:0)

这可能是一个延伸冲突。

如何检查和解决:

  1. 检查扩展程序与此免费magento模块冲突:http://www.magentocommerce.com/magento-connect/modules-conflict-detector.html
  2. 找到有冲突的扩展名并使用一个解决方案进行解决(请阅读底部“如何解决冲突?”)
  3. 清除缓存
  4. 如何解决冲突? 您有3种解决冲突的选择:

    1. 将一个冲突文件中的代码合并到另一个文件中,并在一个
    2. 中关闭重写config.xml
    3. 在一个config.xml中关闭重写,然后使冲突的扩展名PHP文件扩展另一个扩展名
    4. 使用该功能可以使一个扩展依赖于另一个扩展。然后他们将按顺序重写
    5. 了解详情: http://www.webshopapps.com/blog/2010/11/resolving-magento-extension-conflicts/ 相关: Magento - Model Override Not Working in local codePool