模块B覆盖模块A

时间:2019-10-25 06:44:59

标签: magento2

最近,我修复了模块A上的一个错误,该错误将保持供应商的更新,并且我无法直接修改模块A。

所以我想构建一个模块B来覆盖模块A。

我要覆盖哪些文件

/etc/di.xml (Modify) 
/Model/ResourceModel/Log/Grid/Collection.php (New create) 
/Model/ResourceModel/Log/Log.php (Modify) 
/view/adminhtml/ui_component/xxxxxxxx_listing.xml (Modify) 

最好的方法是什么?谢谢。

1 个答案:

答案 0 :(得分:0)

创建一个模块,并在di.xml中为其设置<preference for>以覆盖在其他地方定义的类。喜欢:

<preference for="Original\Module\Model\ResourceModel\Log\Log\Log" type="Your\Module\Model\ResourceModel\Log\Log" />

我相信,如果您的模块在另一个模块之后加载,那么对di.xml的任何更改都应该能够覆盖其他模块上的di.xml。与xxxxxxxx_listing.xml相同,如果将其放置在其他模块中的同一路径下,它将继续进行覆盖。

将原始模块作为依赖项添加到您的模块中,将确保之后加载您的模块。因此,您的module.xml里面会有类似的部分:

<sequence>
    <module name="Original_ModuleName"/>
</sequence>

希望这会有所帮助。