【问题标题】:How do I get the estimate shipping zipcode in Magento?如何在 Magento 中获得估计的运输邮政编码?
【发布时间】:2012-12-29 18:27:04
【问题描述】:

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

非常感谢任何输入!

杰夫

【问题讨论】:

    标签: magento magento-1.7


    【解决方案1】:

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

    报价可以通过不同的方式获得:

    • 通过其 id 或任何其他属性从数据库加载
    • 从结帐会话中收到
    • 从 Checkout Cart 模型接收

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

    但对于您的情况,最直接的方法是从 Checkout Cart 模型中获取 Quote,因为您不需要知道 Quote id - 在前端 Magento 会自动加载带有适当客户数据的购物车。

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

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

    【讨论】:

      【解决方案2】:

      你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2015-01-12
        • 2015-06-29
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-21
        • 1970-01-01
        相关资源
        最近更新 更多