2009-09-02 4 views
6

Привет, в Magento Я хочу вызвать событие, как только заказ был настроен на обработку (путем подтверждения шлюза или вручную), например: Если общий клиент (id 1) тратит более 100 долларов США, и платеж подтвержден установите его идентификатор группы 4 (серебро VIP, который по правилу акции получает 2% скидку во всем мире) Я хотел бы дать награду на это, но я хотел бы ответить, прежде чем 2 дня O_oКак вызвать событие при оплате, полученное в пурпуре?

EDIT: Ответ, который я получил до сих пор, является лишь частичным ответом, также я считаю ссылки очень запутанными, я не понимаю, что такое минимальная настройка, что мне нужно настроить для создания и т. д. Также я пытаюсь выяснить как получить идентификатор/модель платежных клиентов.

ответ

31

Вы должны начать с создания собственного модуля в приложении/коде/локальном. Создайте, например, директории Moak/Vip. Это будет корень вашего модуля.

Для того, чтобы Magento знать, что существует, создайте файл с именем Moak_Vip.xml в и т.д./модулях, со следующим содержанием:

<?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> 

Затем, в директории модуля, вам необходима следующая структура и файлы:

  • и т.д./config.xml
  • Модель/Observer.php

config.xml определяет ваш модуль и объявляет слушателя событий для данного события (checkout_onepage_controller_success_action отправляется после завершения одного процесса проверки страницы, sales_order_payment_pay отправляется, когда платеж подтвержден).

Вам не нужна настройка базы данных, так как вы не сохраните новую сущность. Таким образом, ваш конфигурационный файл должен выглядеть следующим образом:

<?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 должен получить объект события, из которого можно извлекать всю информацию о заказе, клиента ... и выполнения модификаций тебе нравится. Посмотрите на классы модели Magento в приложении/code/core/Mage /.../ Model/... , чтобы увидеть, как перемещаться по этим объектам.

Пример:

<?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

«computeExpirationDate» в вашем файле config.xml должен, вероятно, быть «checkVipCustomer» –

+0

Вы правы @KaeVerens, я отредактировал ответ. – Julien

1

Вы можете создать наблюдателя для события «sales_order_payment_pay». Вот cheatsheet событий в magento 1.3.

И объяснение того, как создать observer methods. Ссылки любезно предоставлены превосходными сайтами activecodeline и indoo.

Смежные вопросы