2011-08-25 119 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()); 
    } 
}