gpt4 book ai didi

magento - 如何停止事件在其他 magento 模块中触发

转载 作者:行者123 更新时间:2023-12-02 01:01:17 25 4
gpt4 key购买 nike

我有一个 magento 扩展,它在 newsletter_subscriber_save_before 事件上将用户数据发送到 API。但现在我必须向该 api 发送更多内容,而新的 var 仅在 newsletter_subscriber_save_after 可用。

问题是如何在不从扩展的 config.xml 中删除的情况下停止该模块的 newsletter_subscriber_save_before

如果我保留两者,它将向 api 发送两次数据,如果我从扩展中删除 newsletter_subscriber_save_before 如果有人升级它,它会再次出现。

我不想禁用,因为它会禁用来自任何地方的事件。

最佳答案

I don't want disable, as it disable event from everywhere.

但是禁用观察器是正确的方法。正是针对此用例,观察者类型“已禁用”存在。

所以如果扩展程序像这样配置了观察者:

<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 - 如何停止事件在其他 magento 模块中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com