2010-12-08 68 views
0

我的Magento有問題。當我登錄並查看我的訂單頁面,顯示以下錯誤:Magento錯誤調用一個非對象的成員函數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功能,它運行很好,但我不知道該setCollection功能確實是明智的做法是刪除功能從代碼。

請別人幫我一把。

+0

此文件是否曾以其他方式更改過?當我檢查源代碼行58是空的並且第60行有`setCollection`時,表明文件中缺少某些內容。 – clockworkgeek 2010-12-11 16:01:02

回答

0

Magento版本號總是幫助調試Mangeto問題。此外,Android(你的標籤)適合哪裏?

假設下面一行是造成您的系統上的麻煩一個

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

的Magento試圖創建一個page/html_pager塊對象(其中,假設沒有覆蓋到位,相當於Mage_Page_Block_Html_Pager)。

在工作系統中,這是通過以下調用完成的。

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

其返回塊的對象,然後塊的setCollection方法被稱爲

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

然而,在你的系統中,createBlock方法沒有返回一個對象,我的猜測是它返回一個布爾值。查看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對象。沒有收集,您的尋呼機模塊將(很可能)不能正確呈現。

相關問題