Magento Observer — получение подписки на рассылку из объекта заказа

Что я могу вызвать из объекта $observer, чтобы определить, щелкнул ли гость или покупатель флажок подписки при оформлении заказа? Пока у меня это:

public function collectCustomerData($observer)
{
    $this->observer = $observer;
    $this->_order = $this->observer->getEvent()->getOrder();
    $this->_address = $this->_order->getShippingAddress();
    $this->data['first_name'] = $this->_address->getFirstname();
    $this->data['last_name'] = $this->_address->getLastname();
    $this->data['city'] = $this->_address->getCity();
    $this->data['email'] = $this->_order->getCustomerEmail();
}

но мне нужно добавить $this->data['is_newsletter'] либо из $this->_order(Mage_Sales_Model_Order), либо из $this->_address(Mage_Sales_Model_Order_Address), либо вытащить другую модель, которая имеет эту информацию, с помощью статических фабричных методов, таких как Mage::getModel(), если мне нужно


person DWils    schedule 20.03.2014    source источник


Ответы (1)


Я разобрался, мне пришлось ввести в уравнение модель newsletter/subscriber. Следующий код вернул либо 1, либо null:

$email = $this->_order->getCustomerEmail();
$isNewsletter = Mage::getModel('newsletter/subscriber')
    ->loadByEmail($email)
    ->getSubscriberStatus();

Основываясь на этом, я смог правильно установить флаг выбора:

$this->data['is_newsletter'] = $isNewsletter;
person DWils    schedule 20.03.2014