通过SOAP触发时,观察者未捕获Magento事件

通过SOAP触发时,观察者未捕获Magento事件,magento,events,soap,Magento,Events,Soap,尽管有很多关于“我的观察者没有被触发”的问题,但这个问题还没有被涵盖 我设置了一个正在工作的观察者来捕捉事件结帐\u提交\u所有\u之后。问题是,这仅在我通过前端购买物品时有效,而在我通过对ShoppingCartOrder的SOAP调用触发事件时无效。订单本身是成功的,我还能够从Mage.php的dispatchEvent记录事件 编辑:为了让这更清楚:事件正在生成,我可以通过Mage.php记录它。问题在于,只有当使用SOAP生成事件时,观察者才捕捉不到它 正如您将从下面的config.xm

尽管有很多关于“我的观察者没有被触发”的问题,但这个问题还没有被涵盖

我设置了一个正在工作的观察者来捕捉事件结帐\u提交\u所有\u之后。问题是,这仅在我通过前端购买物品时有效,而在我通过对ShoppingCartOrder的SOAP调用触发事件时无效。订单本身是成功的,我还能够从Mage.php的dispatchEvent记录事件

编辑:为了让这更清楚:事件正在生成,我可以通过Mage.php记录它。问题在于,只有当使用SOAP生成事件时,观察者才捕捉不到它

正如您将从下面的config.xml中看到的,我使用的是全局范围,因此观察者应该在所有情况下处理它(如果我的理解是正确的)。当我调用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>

正如我所说,观察器在我不使用SOAP时工作,因此它不可能是我的函数代码或命名问题。请帮忙

如果通过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); 
        } 
    }