Magento:致命错误:在非对象上调用成员函数toHtml()

时间:2013-05-06 05:15:16

标签: magento

当我尝试在控制器

中加载块时出现此错误

致命错误:在......线上的非对象上调用成员函数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;

我在auction / block / product / 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>

我尝试在我的块中添加“protected function _toHtml()”但它不起作用。

任何人都可以帮助我吗?仅供参考,我使用的是magento 1.6.2.0 Thx提前:))

1 个答案:

答案 0 :(得分: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类。这应该告诉你配置有什么问题。祝好运。