1

我正在运行 Magento Enterprise 1.9,客户在“我的帐户”的“订单历史记录”部分没有看到任何订单。我已经调试了很多,只是无法弄清楚发生了什么。奇怪的是,在我们的登台服务器上,它工作正常。

到目前为止我所做的:

1)确保<visible_on_front/>应用于其中的每个订单状态/app/code/core/Mage/Sales/etc/config.xml(因此它们都应该是可见的)。

2)app\code\core\Mage\Sales\Block\Order\History.php(查看文件源)从数据库中获取订单并使用$this->setOrders($orders);. 我已经调试了这个对象并输出了原始 SQL 来得到这个:

SELECT `main_table`.*
FROM   `sales_flat_order` AS `main_table`
WHERE  ( main_table.customer_id = '4' )
       AND ( state IN ( 'new', 'processing', 'complete', 'closed',
                        'canceled', 'holded', 'payment_review' ) )  

确实为我的测试客户返回了暂存服务器和实时服务器上的订单。

3)app\design\frontend\enterprise\astleyclarke\template\sales\order\history.phtml(查看文件源)是对应的模板文件,负责输出订单。它使用 抓取订单$_orders = $this->getOrders();并使用if($_orders->getSize()):. 正是在这一点上,事情出了问题。实时服务器上报告的大小为 0,尽管当我手动运行 SQL 时,尽管两台服务器都报告了数据库中的订单,但它不在登台服务器上。

所以对我来说,$orders 对象似乎没有被实时服务器上的 phtml 文件正确传递或获取。

非常感谢任何其他想法或帮助。

4

2 回答 2

0

订单集合在 中初始化Mage_Sales_Block_Order_History::__construct

但该集合尚未加载。

你可以做些什么来调试这个,你可以$orders->load()在上面的函数中临时添加一个,然后检查对象的_items属性$order。是否列出了订单?

您可以提取由(string) $order->getSelect().

如果您在这种情况下收到订单,则可能在块_construct和视图呈现之间对集合进行了操作。

于 2012-11-22T13:23:46.563 回答
0

我知道这是一个老问题,但我认为 OP 遇到了以下情况。安装了一个扩展来重新定义订单历史的模板 phtml。xml 配置指向一个安装在下面的模板文件,base/default但服务器使用名为 的主题enterprise/astleyclarke,因此无法访问模板文件,在这种情况下将没有输出,也没有日志输出。

history.phtml从应用程序文件夹及以后搜索 xml 文件。很有可能有一个配置文件指向一个在活动主题下不存在的位置。

我最近遇到了同样的问题,安装在下面的扩展 xmlbase/default/layout/chipmaster/reant.xml有以下内容:

<template>chipmaster/reant/sales/order/history.phtml</template>

但是服务器正在使用主题xyz/default,并且配置中的历史文件隐藏在:

design/frontend/base/default/template/chipmaster/reant/sales/order/history.phtml

要使服务器再次打印历史记录,请将文件及其目录结构移动到您的主题中,或者编辑 xml 文件。我做了后来和编辑后

<template>sales/order/history.phtml</template>

这是默认位置,我们再次在前端有订单历史记录。

于 2015-04-24T06:12:42.297 回答