如何停止事件在其他 magento 模块中触发
How can I stop event to trigger in other magento module
我有一个 magento 扩展,它在 newsletter_subscriber_save_before
事件上将用户数据发送到 aPI。但现在我必须向 api 发送更多内容,并且新变量仅在 newsletter_subscriber_save_after
.
可用
问题是如何在不从扩展的 config.xml 中删除的情况下停止该模块的 newsletter_subscriber_save_before
。
如果我保留两者,它将向 api 发送两次数据,如果我从扩展中删除 newsletter_subscriber_save_before
,如果有人升级它,它会再次出现。
我不想禁用,因为它会禁用来自任何地方的事件。
在config.xml中,您可以使用相同的事件名称,从而将事件方法更改为空方法。
I don't want disable, as it disable event from everywhere.
但是禁用 observer 是正确的方法。正是对于这个用例,观察者类型 "disabled" 存在。
所以如果扩展程序像这样配置了观察者:
<events>
<newsletter_subscriber_save_before>
<observers>
<some_unique_code>
<type>singleton</type>
<class>extension/observer</class>
<method>sendSomething</method>
</some_unique_code>
</observers>
</newsletter_subscriber_save_before>
</events>
您可以像这样在自己的扩展配置中禁用它:
<events>
<newsletter_subscriber_save_before>
<observers>
<some_unique_code>
<type>disabled</type>
</some_unique_code>
</observers>
</newsletter_subscriber_save_before>
</events>
请注意,您在同一区域(前端、adminhtml 或全局)定义它并使用与原始代码相同的观察者代码("some_unique_code" 在我的示例中)。
重要的是您的扩展程序在原始扩展程序之后加载,您可以通过 app/etc/modules/
中的 XML 中的依赖项来实现这一点:
<depends>
<Other_Extension />
</depends>
我有一个 magento 扩展,它在 newsletter_subscriber_save_before
事件上将用户数据发送到 aPI。但现在我必须向 api 发送更多内容,并且新变量仅在 newsletter_subscriber_save_after
.
问题是如何在不从扩展的 config.xml 中删除的情况下停止该模块的 newsletter_subscriber_save_before
。
如果我保留两者,它将向 api 发送两次数据,如果我从扩展中删除 newsletter_subscriber_save_before
,如果有人升级它,它会再次出现。
我不想禁用,因为它会禁用来自任何地方的事件。
在config.xml中,您可以使用相同的事件名称,从而将事件方法更改为空方法。
I don't want disable, as it disable event from everywhere.
但是禁用 observer 是正确的方法。正是对于这个用例,观察者类型 "disabled" 存在。
所以如果扩展程序像这样配置了观察者:
<events>
<newsletter_subscriber_save_before>
<observers>
<some_unique_code>
<type>singleton</type>
<class>extension/observer</class>
<method>sendSomething</method>
</some_unique_code>
</observers>
</newsletter_subscriber_save_before>
</events>
您可以像这样在自己的扩展配置中禁用它:
<events>
<newsletter_subscriber_save_before>
<observers>
<some_unique_code>
<type>disabled</type>
</some_unique_code>
</observers>
</newsletter_subscriber_save_before>
</events>
请注意,您在同一区域(前端、adminhtml 或全局)定义它并使用与原始代码相同的观察者代码("some_unique_code" 在我的示例中)。
重要的是您的扩展程序在原始扩展程序之后加载,您可以通过 app/etc/modules/
中的 XML 中的依赖项来实现这一点:
<depends>
<Other_Extension />
</depends>