模块 B 覆盖模块 A

Module B override module A

最近我修复了模块 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) 

最好的方法是什么?谢谢

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

<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>

希望对您有所帮助。