2009-09-02 6 views
6

Gentings in Magento 일반 고객 (id 1)이 100 $ 이상을 지출하고 지불이 확인 된 경우 (게이트웨이 확인 또는 수동으로) 주문이 처리되도록 설정되면 이벤트를 트리거하고 싶습니다. 나는 이것에 현상금을 줄 것이다,하지만 난 이일 전에 대답을하고 싶습니다 4 (프로모션 규칙에 의해 전 세계적으로 2 %의 할인 혜택을 얻을 실버 VIP) 자신의 그룹 ID를 설정 O_Omagento로받은 지불 이벤트를 트리거하는 방법?

편집 다음 내가 지금까지 받았던 대답은 단지 부분적인 대답 일뿐입니다. 또한 링크가 매우 혼란 스럽습니다. 최소한의 셋업은 무엇인지 명확하지 않습니다. 무엇을 구성해야합니까? 등을 찾으려고합니다. 유료 고객 ID/모델을 얻는 방법.

답변

31

app/code/local에서 직접 모듈을 만들어야합니다. 예를 들어 Moak/Vip 디렉토리를 만듭니다. 모듈의 루트가됩니다.

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Moak_Vip> 
      <active>true</active> 
      <codePool>local</codePool> 
      <self_name>Moak VIP module</self_name> 
     </Moak_Vip > 
    </modules> 
</config> 

그런 다음, 모듈 디렉토리에 다음과 같은 구조를 필요 : 순서 젠토는 다음과 같은 내용으로 등/모듈 Moak_Vip.xml라는 이름의 파일을 생성, 존재 여부를 확인하기 위해에서

파일 :

  • 등/config.xml에
  • 모델/Observer.php

config.xml은 모듈을 정의하고 지정된 이벤트에 대한 이벤트 리스너를 선언합니다 (한 페이지 체크 아웃 프로세스가 완료되면 checkout_onepage_controller_success_action이 전송되고 지불이 확인되면 sales_order_payment_pay이 전송됩니다).

새 엔티티를 저장하지 않으므로 DB 설정이 필요하지 않습니다. 그래서 설정 파일은 다음과 같은 것이 같이 보일 것이다 :

이제
<?xml version="1.0"?> 
<config> 
    <modules> 
     <Moak_Vip> 
      <version>0.1.0</version> 
     </Moak_Vip> 
    </modules> 
    <global> 
     <models> 
      <moak> 
       <class>Moak_Vip_Model</class> 
      </moak> 
     </models>  
     <events> 
      <sales_order_payment_pay> 
       <observers> 
        <moak_observer> 
         <type>singleton</type> 
         <class>moak/observer</class> 
         <method>checkVipCustomer</method> 
        </moak_observer> 
       </observers> 
      </sales_order_payment_pay >  
     </events> 
    </global> 
</config> 

, 당신의 관찰자 방법 checkVipCustomer 당신이 순서, 고객에 대한 모든 정보를 검색 할 수있는 이벤트 객체를 받아야한다 ... 그리고 수정을 수행 너는 좋아한다. app/code/core/Mage /.../ Model/... 에서 Magento 모델 클래스를 살펴보고 해당 객체를 탐색하는 방법을 확인하십시오.

예 :

<?php 

class Moak_Vip_Model_Observer 
{ 
    public function checkVipCustomer($event) 
    { 
     $order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order 
     /* 
      - Check order amount 
      - Get customer object 
      - Set Group id 
      - $customer->save(); 
     */ 
     return $this; 
    } 

} 

주 내가 여기에 쓴 코드의 테스트 때문에 취급에주의하지했습니다! 도움이 되었으면 좋겠다. Magento는 힘든 학습 곡선을 가지고있다 ... 행운을 빈다!

+3

이것은 훌륭한 친구입니다. 아마도 약간 오래된 것 같지만 Magento가 이벤트/관찰자 패턴을 구현 한 방법에 대한 좋은 아이디어를 제공했습니다. 건배! –

+0

config.xml의 "computeExpirationDate"는 아마도 "checkVipCustomer"여야합니다. –

+0

맞아요. @ KaeVerens, 대답을 편집했습니다. – Julien

1

"sales_order_payment_pay"이벤트에 대한 관찰자를 만들 수 있습니다. 다음은 magento 1.3의 이벤트 중 cheatsheet입니다.

observer methods을 만드는 방법에 대한 설명. 우수한 activecodeline 및 inchoo 사이트에 대한 링크가 제공됩니다.

관련 문제