1

我为我的 Customer_Address 创建了一个“地区”属性,因为我的运费是根据它计算的。此属性在我的结帐中显示得非常好,用户可以毫无问题地从几个选项中进行选择。

但是,当它结帐时,我的类中的 collectRates() 方法会收到一个“Mage_Shipping_Model_Rate_Request”,其中包含有关用户选择的结帐选项的一些信息。在这一点上,我需要有一种方法来获取用户设置为 District 值的任何值,以根据该值计算运费,但我似乎无法从 Mage_Shipping_Model_Rate_Request 获取信息。

有没有办法可以将属性添加到该类以稍后检索它?还是我应该寻求以其他方式获得该价值?

你能给我的任何帮助都会非常有用!

谢谢。

4

1 回答 1

1

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

无论如何,我遇到了同样的问题并以这种方式解决了它:

重写Mage_Sales_Model_Quote_Addressand 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());
     }
}
于 2011-11-24T22:06:14.813 回答