0

ここで状況に遭遇しています。

私の知る限り、以前のバージョンの Magento で、次のような PHP の致命的なエラー メッセージが表示された場合:

Fatal error: Call to a member function toHtml() on a non-object in C:\xampp\htdocs\magento\app\design\frontend\base\default\template\wishlist\view.phtml on line 50

次のように、page.xml ファイルで簡単な変更を行う必要があります。

<block type="core/profiler" output="toHtml"/>

次のようになります。

<block type="core/profiler" output="toHtml" name="core_profiler"/>

しかし今... Magento 1.7を実行すると、このソリューションはもう機能しないようです!

誰かがそれに対する解決策を持っていますか?

前もって感謝します!

4

2 に答える 2

7

これは、基本テーマのレイアウトのオーバーライドにlocal.xmlを使用する必要がある理由の完璧な例です。

問題は、以前のバージョンのMagentoで作業しているときに、ある時点で、wishlist.xmlをベーステーマからカスタムテーマにコピーし、ウィッシュリストテンプレートファイルではないことです。

バージョン1.6と1.7の間で、ウィッシュリストレイアウトにいくつかの新しいブロックが追加されました。

wishlist / view.phtmlの50行目control_buttonsは、 ...という名前の子ブロックでtoHtmlを呼び出そうとしています。

<?php echo $this->getChild('control_buttons')->toHtml();?>

このブロックは1.7でのみ導入されたため、以前のバージョンのwishlist.xmlファイルはそのブロックを宣言していません。したがって、「非オブジェクトでのメンバー関数toHtml()の呼び出し」というエラーが発生します。

したがって、これを解決するには、1.7ベースのwishlist.xmlファイルをカスタマイズしたバージョンとマージする必要があります。基本的には、1.7で宣言された新しいブロックを追加します。

1.6wishlist.xmlはこちら

1.7ここにwishlist.xml

于 2012-08-12T21:54:18.017 に答える
3

あなたの問題が、あなたが言及したxmlレイアウトディレクティブに関連していないことは明らかです:

<block type="core/profiler" output="toHtml" name="core_profiler"/>

致命的なエラーは、ファイル app\design\frontend\base\default\template\wishlist\view.phtml の 50 行目で発生します。

最近、magento のインストールを更新したと思います。

次の実験をお願いします。

  1. アクティブなテーマで、layout/wishlist.xml の名前を一時的に layout/wishlist-back.xml に変更します。
  2. Magento キャッシュをクリーンアップする
  3. 問題をもう一度再現してみてください
  4. 結果を共有してください
于 2012-08-12T19:11:15.633 に答える