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

Magento:如何覆盖本地模块中的模型,magento,model,module,overriding,local,Magento,Model,Module,Overriding,Local,我试图覆盖本地文件夹中的一个模块,该模块也在本地文件夹中,但我不知道这是否可行。这就是我所做的 我已经创建了/local/Mycompany/Modulename/Model/Model.php,我想覆盖/local/Othercompany/Modulename/Model/Model.php my model.php是: class Mycompany_Modulename_Model_Model extends Othercompany_Modulename_Model_Model {

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

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

my 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>

Mycompany\u模块名称\u模型\u模型

已使用Mage::getModel('othercompanymodulename/model')实例化该类

My Mycompany_Mymodule.xml

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

真的
地方的


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

打开你的[magento]\app\etc\modules\Mycompany\u Modulename.xml

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

真的
地方的
上述代码强制
其他公司模块名
首先加载


希望这对您有所帮助

这可能是一个扩展冲突

如何检查和解决:

  • 检查扩展是否与此免费magento模块冲突:
  • 找到冲突的扩展并使用一个解决方案进行解决(请阅读底部的“如何解决冲突?”)
  • 清除缓存
  • 如何解决冲突? 您有3种解决冲突的选择:

  • 将代码从一个冲突文件合并到另一个文件中,并在一个文件中关闭rewrite config.xml
  • 关闭一个config.xml中的重写,然后使冲突的扩展名PHP文件扩展另一个扩展名
  • 使用该功能使一个扩展依赖于另一个扩展。然后他们会按照这个顺序重写
  • 阅读更多信息:
    相关:

    如果我是对的,您在config.xml中覆盖模型的定义中遗漏了一个下划线:

    <global>
      <models>
        <othercompany_modulename>
          <rewrite>
            <model>Mycompany_Modulename_Model_Model</model>
          </rewrite>
        </othercompany_modulename>
      </models>
    </global>
    
    
    Mycompany\u模块名称\u模型\u模型
    
    Mycompany\u Modulename\u Model\u上面覆盖的“othercompanymodulename”应该是othercompany模块中的型号名称,请确认我尝试了此操作,我们的模块冲突检测器仍在报告冲突。问:添加DEPEND语句是正确的方法还是应该单独扩展扩展类?(即,这两种解决方案是否相似???)如果来自另一个模块的代码位于社区代码池中怎么办?