Magento2激活扩展核心模块的自定义模块
-
29-09-2020 - |
题
比方说,我已经创建了一个自定义模块,将扩展一些功能作为Magento_Catalog核心模块的插件,并让我们称之为MyModule。MyModule已经注册和激活。
我已经定义了我的模块和模块中Magento_Catalog的序列。xml 我已经创建了插件并在etc/adminhtml/di中声明它们。xml文件
1)扩展核心Magento模块类的插件是否必须与它扩展的父类在相同的目录结构中?例如,myvendor\MyModule\Block\Adminhtml\Product\Edit的插件。php要在
namespace MyVendor\MyModule\Block\Adminhtml\Product\MyEdit.php
2)我不完全确定我到底应该做什么,所以当我转到页面时,MyModule被调用?
http://mydomain/admin/catalog/product/edit/id/8
谢谢!.
解决方案
1)扩展核心Magento模块类的插件是否必须与它扩展的父类在相同的目录结构中?例如:
不,插件是独立的类。
2)我不完全确定我到底应该做什么,所以当我转到页面时,MyModule被调用?
这个问题不太有意义。插件基本上是Magento中其他公共类方法调用的"侦听器"。如果你有一个插件 class A
, ,您可以为类A上的特定方法设置before,after和"around"侦听器。Before侦听器将允许您更改方法调用的参数。after侦听器将允许您更改结果的值,而around侦听器将允许您在调用方法之前做额外的事情,或者完全取消方法调用。你可能想复习一下 我的对象管理器系列 对于Magento2的对象系统的所有功能。这应该可以帮助您决定如何使用插件自定义Magento的系统行为。
其他提示
您需要在模块的di.xml
文件中添加此
<preference for="Magento\Catalog\Block\Adminhtml\Product\Edit" type="MyVendor\MyModule\Block\Adminhtml\Product\MyEdit" />
.
这将告诉magento使用您的类而不是核心。