2010-12-08 15 views
0

Magentoに問題があります。私はコードからsetCollection機能を削除するとMagento Error非オブジェクト上のメンバ関数setCollection()への呼び出し

Fatal error: Call to a member function setCollection() on a non-object in C:\wamp\www\danfemall\app\code\core\Mage\Sales\Block\Order\History.php on line 58

が、それはうまく動作しますが、私はsetCollection機能はありません、それはそれを削除するのが賢明であるのだろうか。私は、ログインして私の注文ページを表示すると、次のエラーが表示されます関数をコードから削除します。

私を助けてください。

+0

以前に他の方法でファイルを変更しましたか?ソース行をチェックすると、58行目が空になり、60行目に 'setCollection'があり、ファイルに何かがないことが示唆されます。 – clockworkgeek

答えて

0

Magentoのバージョン番号は、Mangetoの問題をデバッグするときに常に役立ちます。また、アンドロイド(あなたのタグ)はどこに収まるの?次の行を想定すると

がシステムにあなたにトラブルを引き起こしているものです

$pager = $this->getLayout()->createBlock('page/html_pager', 'sales.order.history.pager') 
    ->setCollection($this->getOrders()); 

Magentoのは、(Mage_Page_Block_Html_Pagerに対応して、何の上書きが所定の位置にないと仮定した、)page/html_pagerブロックオブジェクトを作成しようとしています。

稼働中のシステムでは、次の呼び出しが行われます。

しかし、あなたのシステムでは、createBlockメソッドがオブジェクトを返すされていない、と私の推測があるBlockオブジェクトを返し、その後、ブロックのsetCollection方法が

->setCollection($this->getOrders()); 

と呼ばれる

$this->getLayout()->createBlock('page/html_pager', 'sales.order.history.pager') 

ブール値を返します。 LayoutクラスのcreateBlockメソッドの最初を見てください。

#File: app/code/core/Mage/Core/Model/Layout.php 
public function createBlock($type, $name='', array $attributes = array()) 
{ 
    try { 
     $block = $this->_getBlockInstance($type, $attributes); 
    } catch (Exception $e) { 
     Mage::logException($e); 
     return false; 
    } 

だから、あなたのシステムが変更されていたり、例外を投げているpage/html_pagerブロックを作成しようとするように構成されています。あなたのMagentoの例外が記録され、または単に一時的に限り、このコードが何をするかのようにvar_dump

try { 
    $block = $this->_getBlockInstance($type, $attributes); 
} catch (Exception $e) { 
    var_dump($e->getMessage()); //don't forget to remove me before pushing 
           //to production 
    Mage::logException($e); 
    return false; 
} 

にドロップすると、それはあなたのシステムにどのように影響するかをされているエラーの種類を確認するためにログをチェック、setCollectionメソッドは、コレクションが追加されますオブジェクト(モデルのオブジェクトのような配列)をBlockオブジェクトに追加します。コレクションがなければ、ページャーブロックは(ほとんどの場合)正確にレンダリングされません。

関連する問題