Question

I have a class rewrite problem in Magento Onepage Checkout as I have a custom module in the local code pool and a third party extension in the community code pool both extending the same class...

I've tried to add a depends node to the ModuleA_Name.xml file of one module then extend the class of ModuleB in the Onepage.php file but this hasn't worked.

Could someone give me heads up on how to do this I know there is another way to do it using an Observer but I could really just need a solution at the moment? Also, would it be dangerous for me to use a dependency since ModuleB may only be enabled for different store/views would that mean the dependent module would no longer work?

Thanks in advance for the assistance...

ModuleA

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

ModuleB

<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>
Was it helpful?

Solution

You have 3 choices for resolving conflicts:

  • Merge the code from one conflicting file into another and switch off the rewrite config.xml in one
  • Switch off the rewrite in one config.xml and then make the conflicting extension PHP file extend the other extension
  • Use the <depends> capability to make one extension depend on another. They will then rewrite in that order

Example (option # 2)

class A_Extension_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage

You would change it to:

class A_Extension_Model_Type_Onepage extends B_Extension_Model_Type_Onepage

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

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top