模块 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>
希望对您有所帮助。
最近我修复了模块 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>
希望对您有所帮助。