【问题标题】:Checkout with custom Address attributes in Magento在 Magento 中使用自定义地址属性结帐
【发布时间】:2011-08-25 17:42:25
【问题描述】:
我为我的 Customer_Address 创建了一个“地区”属性,因为我的运费是根据它计算的。
此属性在我的结帐中显示得非常好,用户可以毫无问题地从几个选项中进行选择。
但是,当它结帐时,我的类中的 collectRates() 方法会收到一个“Mage_Shipping_Model_Rate_Request”,其中包含有关用户选择的结帐选项的一些信息。
此时,我需要一种方法来获取用户设置为 District 值的任何值,以据此计算运费,但我似乎无法从 Mage_Shipping_Model_Rate_Request 获取信息。
有没有办法可以将属性添加到该类以便以后检索它?
或者
我是否应该寻求以其他方式获得该价值?
你能给我的任何帮助都会非常有用!
谢谢。
【问题讨论】:
标签:
magento
attributes
checkout
【解决方案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());
}
}