获取客户对象的事件

时间:2011-02-11 13:47:26

标签: magento

我正在尝试为以下事件创建一个观察者: “sales_order_payment_pay”。

然而根据magento doc http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

我在这次活动中没有太多可用的参数..

您是否知道如何检索客户对象(我需要客户ID和客户电子邮件等信息)?

感谢您的反馈,无论如何,祝您今天愉快,

安塞尔姆

2 个答案:

答案 0 :(得分:3)

此事件确实会公开付款对象,因此您应该能够将其链接起来以获取所需的对象:

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

一般来说,Magento中的对象可以这样链接,现在你的代码不依赖于从客户会话触发的事件(无论如何这都不是一个好的假设)。

希望有所帮助!

谢谢, 乔

答案 1 :(得分:2)

每个事件都会在传递的$ observer对象中公开不同的对象。在Magento中,通常可以通过引用请求或会话中的任意数量的对象来获取大量内容。在这种情况下,有一个客户/会话对象(Mage_Customer_Model_Session),它附有客户。

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