2013-05-06 29 views
0

我得到這個錯誤,當我嘗試加載我的塊控制器Magento的:致命錯誤:調用一個成員函數toHtml()非對象

致命錯誤:調用一個成員函數toHtml()非對象...在線...

這是我的config.xml

<blocks> 
    <auction> 
    <class>Custom_Auction_Block</class> 
    </auction> 
</blocks> 

我打電話給我的塊與此代碼中的控制器:

$this->loadLayout(); 
$autoupdate= $this->getLayout()->getBlock('auction.auto.update')->toHtml(); 
Mage::register('referrer_url', $this->_getRefererUrl()); 
$response['autoupdate'] = $autoupdate; 

我創建拍賣/塊/產品塊/ autoupdate.php

class Custom_Auction_Block_Product_Autoupdate extends Mage_Core_Block_Template{ 

}

這裏是我的佈局

<block type="auction/product_view" name="auction_view" template="auction/catalog/product/view.phtml"> 
     <block type="auction/product_autoupdate" name="auction.auto.update" as="auction_autoupdate" template="auction/catalog/product/autoupdate.phtml"/> 
    </block> 

我嘗試添加 「保護功能_toHtml()」 中我的塊也是..但它不起作用。

任何人都可以幫到我嗎?僅供參考,我使用的Magento 1.6.2.0 THX提前:)

+0

「auction/product_view」是否也存在?還要確保layout.xml使用正確的佈局更新句柄,例如'auction_product_view'請參閱Mage_Core_Controller_Varien_Action :: addActionLayoutHandles() – butterbrot 2013-05-06 06:35:37

+0

是的,它是..我擴展它從Mage_Catalog_Block_Product_View – may 2013-05-06 06:45:20

+0

它很難幫助你,但嘗試把一個死(「asdf」)「類Custom_Auction_Block_Product_Autoupdate」看到看到如果該文件被調用 – butterbrot 2013-05-06 06:47:58

回答

2

您的來電

$this->getLayout()->getBlock('auction.auto.update') 

沒有返回塊對象。這要麼是因爲Magento沒有針對您運行代碼的特定頁面運行佈局XML更新,要麼是因爲它無法實例化類別別名爲auction/product_autoupdate的塊。

我的教育猜測是後面的,你的代碼和配置示例太不精確,無法查明原因。嘗試運行以下代碼

$b = $this->getLayout()->createBlock('auction/product_autoupdate'); 
var_dump($b); 

如果var_dump不轉儲對象,這意味着您的配置不正確。在createBlock方法中啓動跟蹤代碼,直到它引用配置以確定塊的PHP類。這應該告訴你你的配置有什麼問題。祝你好運。

+0

我試着你的代碼,它給我很多對象>>對象(Picodio_Auction_Block_Product_Autoupdate)#160(29){ [「_viewDir」:protected] => string(0)「」 [「_viewVars」:保護] => 數組(0){ } ... – may 2013-05-06 06:49:07

+0

@這意味着Magento可以實例化您的塊對象,這意味着您的config.xml和塊設置是正確的。這也意味着您的問題的下一個最可能的原因是您的佈局更新XML代碼處於錯誤的句柄或配置不正確。你的代碼永遠不會被調用,所以不會有'拍賣。auto.update'塊。 – 2013-05-06 18:18:24

相關問題