Получить объект клиента на мероприятии - PullRequest
1 голос
/ 11 февраля 2011

Я пытаюсь создать наблюдателя на следующее событие: 'sales_order_payment_pay'.

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

У меня не так много параметров, доступных наэто событие ..

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

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

Anselme

Ответы [ 2 ]

3 голосов
/ 11 февраля 2011

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

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

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

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

Спасибо, Джо

2 голосов
/ 11 февраля 2011

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

if(Mage::getSingleton('customer/session')->isLoggedIn()){
  Mage::getSingleton('customer/session')->getCustomer();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...