Magento 在success.phtml 上从客人那里获取数据

Posted

技术标签:

【中文标题】Magento 在success.phtml 上从客人那里获取数据【英文标题】:Magento getData from guest on success.phtml 【发布时间】:2012-01-06 10:51:38 【问题描述】:

我正在尝试在结帐成功页面上获取小计金额。它适用于注册用户:

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

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

可以做什么?

P.S.:我使用的是 Magento 1.6.1 CE

【问题讨论】:

您确定 $amount 不为空吗? ;) ;-) 金额,当然总数为空 【参考方案1】:

取自 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());

抱歉之前说了些无意义的话……

【讨论】:

嗨 shybobycha!试过你的代码。非常感谢你。但它输出相同的东西。注册用户看价格,非注册用户不要! :// 该死的,我把代码粘贴到了错误的位置。在检查登录状态的 if 语句中。然后 - 当然 - 它不会显示给来宾用户。所以我现在将我的代码粘贴到了正确的位置。使用您的代码,页面解析会中断。我不知道为什么?! 首先,请务必将最后的代码粘贴到我的答案中。然后,如果您没有更改其他代码,请准备好将 $order 重命名为 $_order。最后,请给我看var/log/exception.logvar/log/system.log 和 Apache 日志(尾行)中 Magento 写入其异常的日​​志。 哦,对了。您将该代码粘贴在哪里 - 在块或模板中会很好。但不在模型或控制器内...

以上是关于Magento 在success.phtml 上从客人那里获取数据的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从厨师AWS / Opsworks食谱中运行Ansible playbook?

如何在 java 上从 youtube 下载视频? [关闭]

如何在 Mac 上从 Chrome 导出证书?

如何在 iPhone 上从 Facebook 注销(本机/集成)

在单行上从 jq 获取输出

如何在 Windows 上从 Maven 和 SBT 获得彩色输出?