如何在Magento中获得估计的邮政编码?

时间:2013-01-15 15:47:44

标签: magento magento-1.7

我正在编写一个自定义运费模块,我似乎无法弄清楚如何获得估计运输邮政编码...我知道如何在订单创建后获取邮政编码,但不是估计运费部分结帐流程

非常感谢任何输入!

杰夫

2 个答案:

答案 0 :(得分:6)

有关客户购物车的所有信息都保存在Mage_Sales_Model_Quote模型中,直到下订单为止。因此,您可以从报价中获取送货地址模型。从Shipping Address模型中,您可以获得邮政编码,在那里称为“邮政编码”。因此,您最初需要的只是为客户提供报价。

引用可以通过不同方式获得:

  • 通过其ID或任何其他属性
  • 从DB加载
  • 从结帐会话
  • 收到
  • 从Checkout Cart型号
  • 收到

最常见的方法是通过从DB加载来获取Quote - 这可以在所有Magento工作流程和区域(API,前端,后端等)中完成。

但是对于你的情况,最简单的方法是从Checkout Cart模型中获取Quote,因为你不需要知道它的引用ID - 在前端Magento自动加载Cart并提供适当的客户数据。

/** @var $cart Mage_Checkout_Model_Cart */
$cart = Mage::getSingleton('checkout/cart');
$quote = $cart->getQuote();
$shippingAddress = $quote->getShippingAddress();
$zip = $shippingAddress->getPostcode();

为了更加了解,为什么在此方法中使用Checkout Cart:Checkout模块管理前端的整个结帐过程。它处理组合购物车,查看它,完成结帐步骤和下订单。结账模块还将客户的报价模型存储在购物车模型中。虽然Quote存储了整个信息并且可以在任何地方用来操纵客户的购物车,但是Cart模型只是一个临时服务模型,可以帮助Checkout模块履行其职责,并且可以在前端用于当前客户。

答案 1 :(得分:1)

你可以这样做:

Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getPostcode();
//or
Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getPostcode();