0

在 collectRates 方法的 shippingModule 中,我设置了一些值:

$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] => 
)
4

1 回答 1

0

我通过直接从运输模块配置中获取值来解决这个问题。

像这样:

Mage::getStoreConfig('section/group/field');

所以我只是从 system.xml 中获取数据,就像我在 collectRates() 中所做的那样。
但是,这是非常静态的,我仍然希望有一种方法可以直接从订单中获取。

现在这解决了我的问题。如果有人知道任何其他方式,请随时回答

于 2013-06-03T18:35:00.180 回答