Magento 在 success.phtml 上从 guest 获取数据

发布于 2024-12-25 06:02:50 字数 353 浏览 1 评论 0原文

我正在尝试在结帐成功页面上获取小计金额。它对于注册用户来说效果很好:

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
$amount = $_order->getData('subtotal');
$total  = number_format($amount, 2);

但是当订单由访客处理时,$total 为空。

可以做什么?

PS:我正在使用Magento 1.6.1 CE

I am trying to get the subtotal amount on checkout success page. It works good for registred users:

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
$amount = $_order->getData('subtotal');
$total  = number_format($amount, 2);

But when the order is processed by a guest, $total is empty.

What can be done?

P.S.: I am using Magento 1.6.1 CE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执着的年纪 2025-01-01 06:02:50

摘自 Magento 的 app/code/core/Mage/Checkout/Block/Onepage.php

if (!$this->isCustomerLoggedIn()) {
    return $this->getQuote()->getShippingAddress();
} else {
    return Mage::getModel('sales/quote_address');
}

我 99% 确信您可以使用 getOrder() 执行完全相同的操作Mage_Checkout_Block_Success =)

注意: isCustomerLoggedIn() 方法定义于Mage_Checkout_Block_Onepage_Abstract 不被 Mage_Checkout_Block_Success 继承。因此,您可以简单地使用它的实现:

public function isCustomerLoggedIn()
{
    return Mage::getSingleton('customer/session')->isLoggedIn();
}

例如,您的代码现在应如下所示:

if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
    $order = Mage::getSingleton('checkout/session')->getOrder();
} else {
    $order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
}

抱歉之前说了无意义的事情......

Taken from Magento's app/code/core/Mage/Checkout/Block/Onepage.php:

if (!$this->isCustomerLoggedIn()) {
    return $this->getQuote()->getShippingAddress();
} else {
    return Mage::getModel('sales/quote_address');
}

I am 99% sure you can do exactly the same with getOrder() and with Mage_Checkout_Block_Success =)

Note: the isCustomerLoggedIn() method is defined at Mage_Checkout_Block_Onepage_Abstract which is not inherited by Mage_Checkout_Block_Success. So, you could simply use its implementation:

public function isCustomerLoggedIn()
{
    return Mage::getSingleton('customer/session')->isLoggedIn();
}

E.g. your code now shall look like this:

if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
    $order = Mage::getSingleton('checkout/session')->getOrder();
} else {
    $order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
}

Sorry for saying non-sense things before...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文