比方说,我已经创建了一个自定义模块,将扩展一些功能作为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使用您的类而不是核心。

许可以下: CC-BY-SA归因
scroll top