Я пытаюсь решить проблему, но безуспешно. Мне нужно отправить дополнительную информацию с запросом информации о заказе Magento API. К сожалению, Magento, похоже, не имеет каких-либо событий, связанных с этим, поэтому я переписал этот класс и отправил событие. Это все хорошо, так как я изменяю массив $result
новой информацией. Однако, что не очень хорошо, так это то, что измененный массив никогда не отображается обратно в исходном диспетчерском коде.
Вот отправка:
class Company_Module_Model_Order_Api extends Mage_Sales_Model_Order_Api {
public function info($orderIncrementId) {
$result = parent::info($orderIncrementId);
$order = $this->_initOrder($orderIncrementId);
Mage::dispatchEvent("company_api_order_info_add",
array('result' => &$result, 'order' => &$order));
// - I've tried with and without the ampersand
Mage::log($result['affiliate_text']); // Debugging
return $result;
}
}
Вот код наблюдателя:
class Company_Other_Model_Api
{
public function hookToSetAffiliate ($observer) {
$result = $observer->getResult();
$order = $observer->getOrder();
if ($order->getAffiliateCode()) {
$affiliate = Mage::getModel('affiliates/info')
->load($order->getAffiliateCode());
if (is_object($affiliate))
$result['affiliate_text'] = $affiliate->getCode();
}
Mage::log($result['affiliate_text']); // Shows up here
return $observer;
}
}
}
У вас есть идеи, почему $result
не входит должным образом? В хуке он отображается правильно, однако 'affiliate_text'
не виден, когда происходит следующая строка метода диспетчеризации.
Спасибо
JMax