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()):ます。物事がうまくいかないのはこの時点です。SQL を手動で実行したときに両方のサーバーがデータベース内の注文を報告しているにもかかわらず、ステージング サーバーでは報告されたサイズは 0 ですが、ライブ サーバーでは報告されたサイズは 0 です。

だから私には、$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.phtmlapp-folder以降の xml ファイルを検索します。アクティブなテーマの下に存在しない場所を指す構成ファイルが存在する可能性が高くなります。

最近同じ問題に遭遇しました。インストールされた拡張 xml にbase/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 に答える