我有一个magento扩展,它将用户数据发送到newsletter_subscriber_save_before
事件的aPI。但现在我必须向该api发送更多内容,并且只有newsletter_subscriber_save_after
才能使用新的var。
问题是如何停止newsletter_subscriber_save_before
该模块而不从extenion的config.xml中删除。
如果我同时保留两者,它会向api发送两次数据,如果我从扩展程序中删除newsletter_subscriber_save_before
,如果有人升级,它将再次出现。
我不想禁用,因为它禁用了来自任何地方的事件。
答案 0 :(得分:4)
我不想禁用,因为它禁用了来自任何地方的事件。
但禁用观察者是正确的方法。正是对于这个用例,观察者类型"禁用"存在。
因此,如果扩展已经像这样配置了观察者:
<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或全局)中定义它,并使用相同的观察者代码(&#34; some_unique_code&#34;在我的例子中)作为原始代码。
重要的是,您的扩展程序在原始扩展程序之后加载,您可以通过app/etc/modules/
中的XML依赖项实现这一点:
<depends>
<Other_Extension />
</depends>
答案 1 :(得分:2)
在config.xml中,您可以使用相同的事件名称,从而将事件方法更改为空方法。