如何防止Magento中的模块重写类冲突
-
16-10-2019 - |
题
我在Magento Onepage Checkout中有一个类重写问题,因为我在本地代码池中有一个自定义模块,而社区代码池中的第三方扩展程序都扩展了同一类...
我试图将依赖性节点添加到 modulea_name.xml 然后,一个模块的文件扩展 模块 在里面 onepage.php 档案,但这没有起作用。
有人可以让我注意如何做到这一点,我知道还有另一种方法可以使用观察者来做到这一点,但是目前我真的只需要解决方案吗?另外,对我来说,使用依赖性会很危险 模块 可能仅对不同的商店/视图启用,这意味着因依赖模块不再工作吗?
在此先感谢您的帮助...
模块
<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>
模块
<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 一个
- 在一个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