モジュールがMagentoでクラスの競合を書き直すのを防ぐ方法
-
16-10-2019 - |
質問
Magento OnePageチェックアウトでクラスの書き換え問題があります。ローカルコードプールにカスタムモジュールがあり、コミュニティコードプールには同じクラスを拡張しているため、サードパーティの拡張機能があります。
依存ノードをに追加しようとしました modulea_name.xml 1つのモジュールのファイルがクラスを拡張します moduleb の中に OnePage.php ファイルですが、これは機能していません。
誰かが私にこれを行う方法について私に頭を上げてもらえますか?また、それ以来、私が依存関係を使用することは危険でしょうか moduleb さまざまなストア/ビューに対してのみ有効になる可能性があります。それは、従属モジュールが機能しなくなることを意味しますか?
援助をお願いします...
モジュリア
<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>
解決
競合を解決するための3つの選択肢があります。
- 競合するファイルからコードを別のファイルにマージし、書き換えます config.xml 1つ
- 1つの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
所属していません magento.stackexchange