当我尝试在控制器
中加载块时出现此错误致命错误:在......线上的非对象上调用成员函数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提前:))
答案 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类。这应该告诉你配置有什么问题。祝好运。