2011-02-11 3 views
1

Я пытаюсь создать наблюдателя по следующему случаю .: 'sales_order_payment_pay'.Получить объект клиента на мероприятии

Однако в соответствии с Magento дока http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

Я не так много параметров avalaible этого события ..

Есть ли у вас какие-либо идеи, как я мог бы получить объект клиента (мне нужна будет информация например, идентификатор клиента и адрес электронной почты клиента)?

Спасибо за ваши отзывы и в любом случае я желаю вам приятного дня,

Ансельм

ответ

3

Это событие делает выставить объект оплаты, так что вы должны быть в состоянии цепи от того, что, чтобы получить объект, который вы хотите:

public function yourObserverFunction($event) { 
    $payment = $event['payment']; 
    $customer = $payment->getOrder()->getCustomer(); 
    // ... do something useful 
} 

Обычно объекты в Magento может быть прикован, как это, и теперь ваш код не полагается на событие, вызванное сеансом клиента (что в любом случае не является хорошим предположением).

Надеюсь, что это поможет!

Спасибо, Джо

+0

ОК, это очень приятно читать :) Спасибо за это. Я не сделал этого с getOrder(), я мог бы цепью getCustomer(); – Anselme

+0

Да, это, безусловно, лучший метод, чем мой ответ. – shaune

2

Каждое событие предоставляет различные объекты внутри от $ объекта наблюдателя, который передается вокруг. В Magento вы можете часто получать много материала, ссылаясь на любое количество объектов, которые находятся в запросе или сеансе. В этом случае есть объект customer/session (Mage_Customer_Model_Session), к которому прилагается клиент.

if(Mage::getSingleton('customer/session')->isLoggedIn()){ 
    Mage::getSingleton('customer/session')->getCustomer(); 
} 
+0

спасибо за вашу sdek обратной связи, хорошо я не знал, что этот объект был avalaible в это время. – Anselme

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