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.log
、var/log/system.log
和 Apache 日志(尾行)中 Magento 写入其异常的日志。
哦,对了。您将该代码粘贴在哪里 - 在块或模板中会很好。但不在模型或控制器内...以上是关于Magento 在success.phtml 上从客人那里获取数据的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从厨师AWS / Opsworks食谱中运行Ansible playbook?
如何在 java 上从 youtube 下载视频? [关闭]