1

モジュール(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

クラス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>

しかし、オブザーバーは機能しません、誰かが私を助けてくれますか?メソッドが呼び出されているかどうかを確認する方法はありますか?オブザーバーは機能しますが、カールは機能しません。

4

2 に答える 2

0

<config>/<modules>config.xmlの一部を見せていただけますか?

とにかく、Magentoに対応していないオブザーバーの関数名は別として、機能するはずです(のように呼び出す必要がありますexecuteCurlAfterOrderSave()

それが呼ばれていることを確認するために:

  • バックオフィスでログ機能を有効にします(メニューシステム/設定/開発者/ログ設定

  • Mage::log('event just dispatched');直後に追加

    Mage :: dispatchEvent('checkout_type_onepage_save_order_after'、array('order' => $ order、'quote' => $ this-> getQuote()));

Mage_Checkout_Model_Type_Onepageこれは(またはAPIを使用している)注で呼び出されMage_Checkout_Model_Cart_Apiます。コアファイルを変更してはならないため、デバッグ目的でのみこの変更を元に戻してください。

  • Mage::log('even should be captured here');Observerメソッドの先頭にを追加します

  • コードをテストし、var / logフォルダーを調べて、何が起こったか(何がログに記録されたか)を確認します。

幸運を

于 2012-10-25T11:33:17.637 に答える
-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>
于 2012-10-25T11:33:31.310 に答える