尽管我的观察员群众并未被触发。关于SO的问题,这个问题尚未涉及。
我设置了一个工作观察器来捕获事件checkout_submit_all_after。问题是这只有在我通过前端购买项目时才有效,而不是在我通过对shopppingCartOrder的SOAP调用触发事件时。订单本身是成功的,我也能够从Mage.php的dispatchEvent中记录该事件。
编辑:为了更清楚:事件正在生成,我可以通过Mage.php记录它。问题是观察者只有在使用SOAP生成事件时才会捕获它。
正如您将从下面的config.xml中看到的那样,我正在使用Global范围,因此观察者应该在所有情况下处理它(如果我的理解是正确的)。当我调用SOAP时,还有什么我需要做的才能让我的观察者开火吗?此外,我尝试了各种其他事件,但仍然没有触发。
config.xml中:
<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>
Observer.php:
class Company_Obsrv_Model_Observer
{
public function observeTest(Varien_Event_Observer $observer)
{
Mage::log('CALLED!', null, 'newlog.log', true);
}
}
就像我说的那样,当我不使用SOAP时,观察者会工作,因此它不能成为我的功能代码或命名问题。请帮忙!
答案 0 :(得分:1)
哎呀!这是该死的CACHE。我确信我把它关了。
答案 1 :(得分:0)
如果通过SOAP下达订单时不会触发此特定事件,则有两种解决方案:
倾听更广泛的事件,例如sales_order_place_after
。如果您不希望从管理区域触发此操作,则可以将事件配置移出全局节点并移入前端节点。
创建自定义SOAP端点并自行触发唯一事件:
Mage::dispatchEvent('soap_order_place_after', array('order'=>$order));