我为Customer_Address创建了一个“区”属性,因为我的运费是根据它计算的。 此属性在我的结帐时显示得非常好,用户可以选择几个选项而没有问题。
然而,当它结帐时,我的类中的collectRates()方法会收到一个“Mage_Shipping_Model_Rate_Request”,其中包含有关用户选中要检出的选项的一些信息。 此时,我需要有一种方法来获取用户设置为区域值的任何内容,以便根据该值计算运费,但我似乎无法从Mage_Shipping_Model_Rate_Request获取信息。
有没有办法可以将属性添加到该类中以便以后检索它? 要么 我是否应该寻求以其他方式获得该价值?
无论你给我什么帮助都会非常有用!
感谢。
答案 0 :(得分:1)
我认为你已经解决了这个问题......
无论如何,我遇到了同样的问题并以这种方式解决了这个问题:
重写Mage_Sales_Model_Quote_Address
和Mage_Shipping_Model_Shipping
,这些是$request = Mage::getModel('shipping/rate_request');
所以看起来像:
class MyCompany_MyModule_Model_Quote_Address extends Mage_Sales_Model_Quote_Address{
public function requestShippingRates(Mage_Sales_Model_Quote_Item_Abstract $item = null)
{
/** @var $request Mage_Shipping_Model_Rate_Request */
$request = Mage::getModel('shipping/rate_request');
// add custom attribute
$request->setDestCustom($this->getCustomAddressAttribute());
...
}
}
和
class MyCompany_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping{
public function collectRatesByAddress(Varien_Object $address, $limitCarrier = null)
{
/** @var $request Mage_Shipping_Model_Rate_Request */
$request = Mage::getModel('shipping/rate_request');
...
// add custom attribute
$request->setDestCustom($address->getCustomAddressAttribute());
}
}