我在Magento Onepage Checkout中有一个类重写问题,因为我在本地代码池中有一个自定义模块,而社区代码池中的第三方扩展程序都扩展了同一类...

我试图将依赖性节点添加到 modulea_name.xml 然后,一个模块的文件扩展 模块 在里面 onepage.php 档案,但这没有起作用。

有人可以让我注意如何做到这一点,我知道还有另一种方法可以使用观察者来做到这一点,但是目前我真的只需要解决方案吗?另外,对我来说,使用依赖性会很危险 模块 可能仅对不同的商店/视图启用,这意味着因依赖模块不再工作吗?

在此先感谢您的帮助...

模块

<global>
  <rewrite>
      <moduleA>
          <from><![CDATA[#^/checkout/onepage/#]]></from>
          <to>/moduleA/onepage/</to>
      </moduleA>
      <moduleA>
          <from><![CDATA[#^/checkout/cart/add/#]]></from>
          <to>/moduleA/cart/add/</to>
      </moduleA>
  </rewrite>

模块

<global>
    <models>
      <salesrep>
        <class>ModuleB_SalesRep_Model</class>
        <resourceModel>salesrep_mysql4</resourceModel>
      </salesrep>

      <salesrep_mysql4>
        <class>ModuleB_SalesRep_Model_Mysql4</class>
        <entities>
          <salesrep>
            <table>salesrep</table>
          </salesrep>
        </entities>
      </salesrep_mysql4>

      <checkout>
        <rewrite>
          <type_onepage>ModuleB_SalesRep_Model_Type_Onepage</type_onepage>
        </rewrite>
      </checkout>

      <modulebadminthemecontroller>
        <class>LucidPath_SalesRep_Controller</class>
      </modulebadminthemecontroller>
    </models>
</global>
有帮助吗?

解决方案

您有3个解决冲突的选择:

  • 将代码从一个冲突的文件合并到另一个文件中,然后关闭重写 config.xml 一个
  • 在一个config.xml中关闭重写,然后使冲突的扩展PHP文件扩展了另一个扩展
  • 使用 <depends> 使一个扩展的能力取决于另一个扩展。然后他们将按照该顺序重写

示例(选项#2)

class A_Extension_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage

您会将其更改为:

class A_Extension_Model_Type_Onepage extends B_Extension_Model_Type_Onepage

https://stackoverflow.com/questions/14815717/multiple-modules-overriding-same-core-file-in-magento

许可以下: CC-BY-SA归因
scroll top