Magento 1.6.2事件观察员不起作用

时间:2012-10-25 11:15:20

标签: php magento

我正在尝试在我的模块中实现观察者(app / code / community / Test / Shipping)。

我的文件是: app / code / community / Test / Shipping / etc / config.xml 仅限全球部分

<global>
    <models>
        <test_shipping>
            <class>Test_Shipping_Model</class>
        </test_shipping>
    </models>
    <events>
        <checkout_type_onepage_save_order_after>
            <observers>
                <Test_Shipping_Observer>
                    <type>singleton</type>
                    <class>test_shipping/observer</class>
                    <method>checkout_type_onepage_save_order_after</method>
                </Test_Shipping_Observer>
            </observers>
        </checkout_type_onepage_save_order_after>
    </events>
</global>

app / code / community / Test / Shipping / Model / Observer.php 我在curl中替换了一些值但是经过测试并使用了正确的值。

<?php

class Test_Shipping_Model_Observer {

public function checkout_type_onepage_save_order_after(Varien_Event_Observer $observer) {
    $requests = array(
        "username" => "test",
        "password" => "test",
        "environment" => "development",
        "action" => "ship",
        "service_id" => "1"
    );
    $url = "";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requests));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);
}

}

带有开始和结束配置标记的

app / etc / modules / Test_Shipping.xml ,在我的代码示例中无法获取它们。

<modules>
    <Test_Shipping>
        <active>true</active>
        <codePool>community</codePool>
    </Test_Shipping>
</modules>

但是观察者没有工作,有人可以帮助我吗?有没有办法检查方法是否被调用,所以我会知道观察者的工作,但我的卷曲不会。

2 个答案:

答案 0 :(得分:0)

您能告诉我们您的config.xml的<config>/<modules>部分吗?

无论如何,除了非友好的观察者的功能名称之外,它应该有效(你应该像executeCurlAfterOrderSave()那样打电话)

确定它被称为:

  • 在后台激活日志功能(菜单系统/配置/开发人员/日志设置

  • 之后添加Mage::log('event just dispatched');

    法师:: dispatchEvent( 'checkout_type_onepage_save_order_after',                     数组('order'=&gt; $ order,'quote'=&gt; $ this-&gt; getQuote()));

Mage_Checkout_Model_Type_Onepage(或Mage_Checkout_Model_Cart_Api中调用的

您正在使用API​​) 注意:还原此更改仅用于调试目的,因为您不能修改核心文件。

  • 在观察者方法的开头添加Mage::log('even should be captured here');

  • 测试您的代码并查看var / log文件夹以查看发生了什么(已记录的内容)

祝你好运

答案 1 :(得分:-1)

您的config.xml错误,

<global>
<models>
    <test_shipping>
        <class>Test_Shipping_Model</class>
    </test_shipping>
</models>   
</global>

 <events>
    <checkout_type_onepage_save_order_after>
        <observers>
            <Test_Shipping_Observer>
                <type>singleton</type>
                <class>test_shipping/observer</class>
                <method>checkout_type_onepage_save_order_after</method>
            </Test_Shipping_Observer>
        </observers>
    </checkout_type_onepage_save_order_after>
</events>