Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services Magento请求-前端、后端还是API?_Web Services_Api_Events_Magento - Fatal编程技术网

Web services Magento请求-前端、后端还是API?

Web services Magento请求-前端、后端还是API?,web-services,api,events,magento,Web Services,Api,Events,Magento,好的-我已经阅读并喜欢关于Magento前端/后端的讨论,并同意Ben的回答 在 现在让我们把它提高一个档次。我们有一个拥有高度定制解决方案的客户,我们使用Magento observer调用Web服务,更新公司CRM系统中的客户和客户地址数据。这些事件与customer_save_before、customeraddress_save_before事件无关,在前端和adminhtml端的调用略有不同(谢谢Ben!) 现在,我们看到一种循环情况开始出现,CRM系统正在使用Magento API向

好的-我已经阅读并喜欢关于Magento前端/后端的讨论,并同意Ben的回答 在

现在让我们把它提高一个档次。我们有一个拥有高度定制解决方案的客户,我们使用Magento observer调用Web服务,更新公司CRM系统中的客户和客户地址数据。这些事件与customer_save_before、customeraddress_save_before事件无关,在前端和adminhtml端的调用略有不同(谢谢Ben!)

现在,我们看到一种循环情况开始出现,CRM系统正在使用Magento API向Magento插入更新,这会在事件发生前触发customer_save_,然后我们将数据发送回CRM,然后CRM会再次调用Magento API,等等,等等,直到整个house-o-Card崩溃

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


有什么建议吗?

您可以查看称为事件的块。试试看:

$block = $observer->getEvent()->getBlock();
    if ($block instanceof Your_block_name) {
//do something
或者,您可以将mage核心代码更改为在分派事件时为您的控件发送一些附加数据。 就像这样:

Mage::dispatchEvent('customer_save_before',array('flag'=>'1'));
或者类似的。
但是,如果这个事件被同一个块从同一个地方调用,并且在magento或webservice调用它时没有任何其他行为需要知道,那么这是不可能的。

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

查看请求uri并查看api的调用情况

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

如果是这样,则设置一个标志或执行任何操作。

问题在于API调用也会分派事件。我来看看街区的建议。不应存在与API调用关联的块。