首先,您可以将两个事件的观察者定义为单例
<global>
<events>
<customer_save_after>
<observers>
<namespace_module>
<type>singleton</type>
<class>namespace_module/observer</class>
<method>doSomething</method>
</namespace_module>
</observers>
</customer_save_after>
<customer_register_success>
<observers>
<namespace_module>
<type>singleton</type>
<class>namespace_module/observer</class>
<method>doSomething</method>
</namespace_module>
</observers>
</customer_register_success>
</events>
</global>
在这种情况下,两个事件都将使用相同的观察者对象。因此,您可以在观察者中创建标志,并在执行某些操作之前对其进行检查。
class [Namespace]_[Module]_Model_Observer
{
protected $canDoSomething = false;
public function doSomething($observer)
{
if (!$this->canDoSomething) {
//here your code
//now set flag to true to prevent executing your code twice
$this->canDoSomething = true;
}
}
}
现在,您的代码将只执行一次。