最近,我修复了模块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)
最好的方法是什么?谢谢。
答案 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>
希望这会有所帮助。