Popular Posts

Wednesday, 26 February 2014

How can I prevent a module rewrite class conflict in Magento

Hi guys 
I have a class rewrite problem in Magento Onepage checkout as I have custom module in the local code pool and a third party extension in the community code pool both extending the same class...
I have tried to add a depends node to the ModuleA_Name.xml fiie of one module then extend the class of ModuleB in the Onepage.php file but this hasn't work.
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 assistane...
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>
ANSWER

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

Thanks
 

No comments:

Post a Comment

Magento: How to get last order id

There are many ways to get last order id:   1. From checkout session: $lastOrderId = Mage::getSingleton('checkout/session'...