2013-05-30 2 views
0

В shippingModule в методе collectRates, я создал несколько значений:Magento получить доставку collectRates() атрибуты наблюдателя

$method->setCarrier('test_customrate'); 
$method->setCarrierTitle($this->getConfigData('title')); 
$method->setMethod('test_customrate'); 
$method->setMethodTitle($this->getConfigData('name')); 
$method->setPrice($this->getConfigData('price')); 
$method->setCost(2); 
$method->setUsername($this->getConfigData('username')); 
$method->setPassword($this->getConfigData('password')); 
$result->append($method); 

Где эти значения, хранящихся в кассе сессии? Я не могу найти их нигде.

Я обнаружил, что с приведенным ниже кодом в наблюдателе я могу получить пару значений, как указано выше. Однако некоторые значения, такие как стоимость, имя пользователя и пароль, отсутствуют.

$rates = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress() 
->getShippingRatesCollection(); 


foreach ($rates as $rate) { 

Mage::log($rate->getData()); 

} 

это получает что-то из следующей структуры:

2013-06-01T15:36:10+00:00 DEBUG (7): Array 
(
[rate_id] => 852 
[address_id] => 93 
[created_at] => 2013-06-01 15:36:06 
[updated_at] => 2013-06-01 15:36:09 
[carrier] => test_customrate 
[carrier_title] => test_customrate 
[code] => test_customrate_test_customrate 
[method] => test_customrate 
[method_description] => 
[price] => 0.0000 
[method_title] => test123 
[error_message] => 
) 

ответ

0

Я работал вокруг этого просто получать значения непосредственно из модуля доставки конфигурации.

Как это:

Маг :: getStoreConfig ('секция/группа/поле');

Так что я просто получаю данные из system.xml, как я сделал в collectRates().
Однако это довольно статично, и я бы предпочел метод, чтобы получить это прямо из заказа.

На данный момент это исправляет мою проблему. Если что-либо знает какие-либо другие способы, не стесняйтесь отвечать