通过SOAP触发时,观察者未捕获Magento事件
尽管有很多关于“我的观察者没有被触发”的问题,但这个问题还没有被涵盖 我设置了一个正在工作的观察者来捕捉事件结帐\u提交\u所有\u之后。问题是,这仅在我通过前端购买物品时有效,而在我通过对ShoppingCartOrder的SOAP调用触发事件时无效。订单本身是成功的,我还能够从Mage.php的dispatchEvent记录事件 编辑:为了让这更清楚:事件正在生成,我可以通过Mage.php记录它。问题在于,只有当使用SOAP生成事件时,观察者才捕捉不到它 正如您将从下面的config.xml中看到的,我使用的是全局范围,因此观察者应该在所有情况下处理它(如果我的理解是正确的)。当我调用SOAP时,是否还需要做些什么才能让我的观察者开火?此外,我还尝试了其他各种事件,但仍然没有触发任何事件 config.xml:通过SOAP触发时,观察者未捕获Magento事件,magento,events,soap,Magento,Events,Soap,尽管有很多关于“我的观察者没有被触发”的问题,但这个问题还没有被涵盖 我设置了一个正在工作的观察者来捕捉事件结帐\u提交\u所有\u之后。问题是,这仅在我通过前端购买物品时有效,而在我通过对ShoppingCartOrder的SOAP调用触发事件时无效。订单本身是成功的,我还能够从Mage.php的dispatchEvent记录事件 编辑:为了让这更清楚:事件正在生成,我可以通过Mage.php记录它。问题在于,只有当使用SOAP生成事件时,观察者才捕捉不到它 正如您将从下面的config.xm
<config>
<modules>
<Company_Obsrv>
<version>0.0.1</version>
</Company_Obsrv>
</modules>
<global>
<models>
<!--
Unique identifier in the model's node.
By convention, we put the module's name in lowercase.
-->
<company_obsrv>
<!--path-->
<class>Company_Obsrv_Model</class>
</company_obsrv>
</models>
<events>
<checkout_submit_all_after>
<observers>
<company_obsrv>
<class>company_obsrv/observer</class>
<method>observeTest</method>
<type>singleton</type>
</company_obsrv>
</observers>
</checkout_submit_all_after>
</events>
</global>
</config>
正如我所说,观察器在我不使用SOAP时工作,因此它不可能是我的函数代码或命名问题。请帮忙 如果通过SOAP下订单时未触发此特定事件,则有两种解决方案:
销售\订单\放置\在
之后。如果不希望从管理区域触发此事件,则可以将事件配置移出全局节点并移入前端节点Mage::dispatchEvent('soap\u order\u place\u after',数组('order'=>$order))代码>
Grrr!那是该死的缓存。我确信我已经关闭了它。不,我说的是正在生成事件(当它进入Mage.php的dispatchEvent时,我可以将其记录下来)。我还测试了其他事件,当事件触发时,观察者无法捕捉到它。它可能会与自定义SOAP端点一起工作,但我真的需要为此付出代价吗?我想做的就是捕捉一个我知道正在生成的事件!您能否提供“公司/观察员”的代码?添加了代码。当事件从前端触发时,它可以很好地捕获事件,所以我不知道这是怎么回事,这就是问题所在。正如我所理解的,根据您现在所问的代码,当通过前端下订单时会发生什么,以及通过SOAP下订单时会发生什么?哪个magento版本,你有使用???我在1.8.1.0版,这是一个已知的错误吗?非常感谢,我也被这个愚蠢的新手错误抓住了。
class Company_Obsrv_Model_Observer
{
public function observeTest(Varien_Event_Observer $observer)
{
Mage::log('CALLED!', null, 'newlog.log', true);
}
}