कैसे Magento में मॉड्यूल फिर से लिखना संघर्ष को रोकने के लिए


9

मुझे Magento Onepage Checkout में एक वर्ग फिर से लिखना समस्या है क्योंकि मेरे पास स्थानीय कोड पूल में एक कस्टम मॉड्यूल है और सामुदायिक कोड पूल में एक तृतीय पक्ष विस्तार दोनों समान वर्ग का विस्तार कर रहे हैं ...

मैं एक के लिए नोड निर्भर करता है जोड़ने के लिए कोशिश की है ModuleA_Name.xml एक मॉड्यूल की फ़ाइल तो की श्रेणी का विस्तार ModuleB में Onepage.php फ़ाइल लेकिन यह काम नहीं किया है।

क्या कोई मुझे दे सकता है कि मैं यह कैसे कर सकता हूं मुझे पता है कि एक ऑब्जर्वर का उपयोग करने का एक और तरीका है लेकिन मुझे वास्तव में इस समय समाधान की आवश्यकता हो सकती है? इसके अलावा, मेरे लिए यह निर्भरता का उपयोग करने के लिए खतरनाक होगा क्योंकि मॉड्यूलबी केवल अलग-अलग स्टोर / विचारों के लिए सक्षम हो सकता है इसका मतलब है कि निर्भर मॉड्यूल अब काम नहीं करेगा?

अग्रिम में सहायता के लिए धन्यवाद ...

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>

1
कौन सा Onepageवर्ग विशेष रूप से, ब्लॉक या मॉडल?
benmarks

जवाबों:


20

आपके पास संघर्षों को हल करने के लिए 3 विकल्प हैं:

  • एक परस्पर विरोधी फ़ाइल से कोड को दूसरे में विलय करें और एक में rewrite 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 देखें


@benmark मैंने प्रत्येक config.xml फ़ाइल से कुछ कोड जोड़ा है
user1704524

वैसे मैं मॉड्यूलए के साथ मॉड्यूलए के वर्ग को बढ़ाकर वर्ग पुनर्लेखन मुद्दे को हल करने में कामयाब रहा हूं
user1704524

चूंकि मैं OPCheckout का उपयोग कर रहा हूं और मॉड्यूल नए चरण में दिखाई देता है, लेकिन यह किसी कारण से opcheckout.js फ़ाइल द्वारा कॉल नहीं करता है इसलिए यह चरण को रोक देता है। मैंने सांत्वना में देखा है और कक्षा को देख सकता है: section allowलेकिन यह सक्रिय नहीं होता है ...
user1704524
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.