2011-08-25 63 views
1

我有一个为我的Customer_Address创建的“地区”属性,因为我的送货是根据它计算的。 此属性在我的结帐中显示得非常好,用户可以从几个选项中进行选择,而没有任何问题。使用Magento中的自定义地址属性结账

但是,当它检出时,我的类中的collectRates()方法会收到一个“Mage_Shipping_Model_Rate_Request”,其中包含有关用户选择的选项进行签出的一些信息。 在这一点上,我需要一种方法来获取用户设置的区域值,以基于此计算运输成本,但我似乎无法从Mage_Shipping_Model_Rate_Request获取信息。

有没有一种方法可以将该属性添加到该类以稍后检索它? 或 我是否应该以其他方式获得该价值?

无论你给我什么帮助,都会非常有用!

谢谢。

回答

1

我想你解决了这个已经...

反正我有同样的问题,解决这样说:

重写Mage_Sales_Model_Quote_AddressMage_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()); 
    } 
}