Bagaimana mencegah modul menulis ulang konflik kelas di Magento


9

Saya memiliki masalah penulisan ulang kelas di Magento Onepage Checkout karena saya memiliki modul khusus di kumpulan kode lokal dan ekstensi pihak ketiga dalam kumpulan kode komunitas keduanya memperluas kelas yang sama ...

Saya sudah mencoba menambahkan node dependen ke file ModuleA_Name.xml dari satu modul kemudian memperluas kelas ModuleB di file Onepage.php tetapi ini tidak berhasil.

Bisakah seseorang memberi saya petunjuk tentang bagaimana melakukan ini, saya tahu ada cara lain untuk melakukannya menggunakan Observer tetapi saya benar-benar hanya perlu solusi saat ini? Juga, akankah berbahaya bagi saya untuk menggunakan dependensi karena ModuleB hanya dapat diaktifkan untuk berbagai toko / tampilan apakah itu berarti modul dependen tidak lagi berfungsi?

Terima kasih sebelumnya atas bantuannya ...

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>

ModulB

<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
OnepageKelas mana yang spesifik, blok atau model?
patokan

Jawaban:


20

Anda memiliki 3 pilihan untuk menyelesaikan konflik:

  • Gabungkan kode dari satu file yang bertentangan ke yang lain dan nonaktifkan config.xml penulisan ulang menjadi satu
  • Matikan penulisan ulang dalam satu config.xml dan kemudian buat ekstensi file PHP yang bertentangan memperpanjang ekstensi lainnya
  • Gunakan <depends>kemampuan untuk membuat satu ekstensi bergantung pada ekstensi lainnya. Mereka kemudian akan menulis ulang dalam urutan itu

Contoh (opsi # 2)

class A_Extension_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage

Anda akan mengubahnya menjadi:

class A_Extension_Model_Type_Onepage extends B_Extension_Model_Type_Onepage

Lihat /programming/14815717/multiple-modules-overriding-same-core-file-in-magento


@benmarks Saya telah menambahkan beberapa kode dari setiap file config.xml
user1704524

Yah aku sudah berhasil memecahkan masalah penulisan ulang kelas dengan memperluas kelas moduleA dengan moduleB
user1704524

Karena saya menggunakan OPCheckout dan modul muncul di langkah baru tetapi tidak dipanggil oleh file opcheckout.js karena alasan tertentu ia melewatkan langkah. Saya telah melihat di konsol dan dapat melihat kelas: section allowtetapi tidak menjadi aktif ...
user1704524
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.