0

ブロックをコントローラーにロードしようとすると、このエラーが発生します

致命的なエラー: 行 ... 内の非オブジェクトでメンバー関数 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を使用しています:)

4

1 に答える 1

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 クラスを決定するために構成を参照するポイントに到達するまで、メソッド内のコードのトレースを開始します。これにより、構成の何が問題なのかがわかります。幸運を。

于 2013-05-06T06:13:28.650 に答える