Magento请求 - 前端,后端还是API?

时间:2012-08-23 18:26:25

标签: web-services api events magento

好的 - 我已阅读并喜欢关于Magento前端/后端的讨论并同意Ben的回答 在Magento Request - Frontend or Backend?

现在让我们把它提升一个档次。我们的客户拥有高度定制的解决方案,我们使用Magento观察员调用Web服务,更新企业CRM系统中的客户和客户地址数据。这些事件依赖于customer_save_before,customeraddress_save_before事件,并且在前端和adminhtml方面的调用略有不同(感谢Ben!)。

现在我们看到一个循环的情况开始,CRM系统正在使用Magento API将更新插入Magento,这会触发customer_save_before事件,然后我们将数据发送回CRM--然后调用Magento API再等等,等等,直到整个房子的卡片都崩溃了。

我希望能够屏蔽入站API调用,但是,我找不到任何有关如何执行此操作的信息。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以查看名为该事件的区块。试试吧:

$block = $observer->getEvent()->getBlock();
    if ($block instanceof Your_block_name) {
//do something

或者,您可以更改法师核心代码,以便在发送事件时为您的控件发送一些其他数据。 像那样:

Mage::dispatchEvent('customer_save_before',array('flag'=>'1'));

或类似的东西。 但是,如果这个事件被同一个区域从同一个地方调用,并且没有任何其他行为可以知道它何时被magento或webservice调用,那么它是不可能的。

答案 1 :(得分:0)

更新我以前的答案 - formdata检测工作正常,但是,我认为这样会更好 -

查看request_uri并查看api已被调用。

if (stripos($_SERVER['REQUEST_URI'], "index.php/api")) {
   $ApiCall=true;
}

如果是,那么设置一个标志或做任何事情。