2012-10-25 2 views
1

내 모듈 (app/code/community/Test/Shipping)에 observer를 구현하려고합니다.Magento 1.6.2 이벤트 관찰자가 작동하지 않습니다.

내 파일은 다음과 같습니다 응용 프로그램/코드/사회/테스트/배송/등/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> 

응용 프로그램/코드/사회/테스트/배송/Model/Observer.php 컬링의 일부 값을 바꿔서 테스트했지만 올바른 값으로 작동합니다.

<?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); 
} 

}

응용 프로그램은/etc/모듈/시작과에 설정 태그를 끝으로 Test_Shipping.xml, 내 코드 예제에서 그들을 얻을 couldnt한다.

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

하지만 관찰자는 작동하지 않습니다. 아무도 도와 줄 수 없나요? 메서드가 호출되었는지 확인할 수있는 방법이있어 관찰자가 작동하지만 컬이 왜곡되는 것을 알 수 있습니다.

답변

0

config.xml의 <config>/<modules> 부분을 표시 할 수 있습니까?

  • 활성화 :

    어쨌든

    떨어져 비 젠토 친화적 인 당신의 관찰자의 함수 이름에서 작동한다

    가 호출되어 있는지 확인하기 위해 (당신은 executeCurlAfterOrderSave()처럼 호출해야합니다) 백 오피스에서 로그 functionnality (메뉴 시스템/구성/개발자/로그 설정

  • 그냥

    01 후 Mage::log('event just dispatched');를 추가

    Mage :: dispatchEvent ('checkout_type_onepage_save_order_after', array ('order'=> $ order, 'quote'=> $ this-> getQuote())); 단지 당신이 코어 파일을 수정하지 않아야으로 목적을 디버깅의 변경 사항을 되돌릴 다음 Mage_Checkout_Model_Type_Onepage에라고

노트 (또는 Mage_Checkout_Model_Cart_Api 당신이 API를 사용하고있다).

  • 은 관찰자 방법

  • 테스트 코드의 시작 부분에 Mage::log('even should be captured here');를 추가하고 (기록 된 내용)

무슨 일이 있었는지 있는지 확인하기 위해 VAR/로그 폴더를 보면

행운을 빌어 요.

+0

1.0.1 user1773888

+0

마법사 : 로그 ('바로 발송 이벤트'); 로그에 있었지만 Mage :: log ('여기에 캡처해야합니다'); didnt한다. 그래서 그것은 나의 관찰자 doesnt가 ​​일하는 것을 의미한다 – user1773888

+0

그래. 에서 의 이름을 바꾸고 내가 제안한대로 관찰자 함수의 이름을 변경하십시오. –

-1

사용자 환경 설정.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> 
+0

뭐가 잘못 됐어? 당신은 그냥 내 코드를 복사 - 붙여 넣기 – user1773888

+0

죄송합니다 편집 한 줄을 놓으십시오 – Guerra

+0

바깥 쪽 도움 안 됨 – user1773888

관련 문제