1

ブロックの出力が空の文字列である問題のトラブルシューティングを試みています。

テンプレートファイルでPHPステートメントが評価されているのを確認できるところまで追跡しましたがtoHtml()、クラス内でMage_Core_Block_Abstract、に$html = $this->_toHtml();空の文字列が割り当てられて$htmlいます。

さらに掘り下げてみると、この行の上にテンプレートが含まれていても、内部fetchView()$html = ob_get_clean();空の文字列が割り当てられており、デバッガーを使用して評価していることがわかりました。

ここから、これをデバッグする方法がわかりません。モジュールに何か問題がない可能性があります(私はMagentoの初心者です)。

モジュールからの関連コードは次のとおりです。

app / code / local / AnnattaDesign / AbandonedCarts / etc / config.xml

<config>
    <global>
        <blocks>
            <anattadesign_abandonedcarts>
                <class>AnattaDesign_AbandonedCarts_Block</class>
            </anattadesign_abandonedcarts>
        </blocks>
    </global>
    <adminhtml>
    <layout>
        <updates>
            <anattadesign_abandonedcarts>
                <file>layout.xml</file>
            </anattadesign_abandonedcarts>
        </updates>
    </layout>
</adminhtml>

app / design / adminhtml / base / default / layout / layout.xml

<?xml version="1.0" encoding="utf-8"?>
<layout>
    <adminhtml_dashboard_index>
        <reference name="head">
            <action method="addCss">
                <stylesheet>anattadesign/abandonedcarts/css/style.css</stylesheet>
            </action>
            <action method="addJs">
                <script>anattadesign/abandonedcarts/zepto.js</script>
            </action>
            <action method="addJs">
                <script>anattadesign/abandonedcarts/adminhack.js</script>
            </action>
        </reference>
    </adminhtml_dashboard_index>
</layout>

app / code / local / AnattaDesign / AbandonedCarts / controllers / WidgetController.php

<?php

class AnattaDesign_AbandonedCarts_WidgetController extends Mage_Adminhtml_Controller_Action {

    public function indexAction() {
        echo "index action of widget controller";
        die();
    }

    public function renderAction() {
        $html = $this->getLayout()->createBlock( 'anattadesign_abandonedcarts/widget', 'root' )->setTemplate( 'anattadesign/abandonedcarts/widget.phtml' )->toHtml();
        $this->getResponse()->setBody( $html );
        die();
    }
}

app / code / local / AnnattaDesign / AbandonedCarts / Block / Widget.php

<?php

class AnattaDesign_AbandonedCarts_Block_Widget extends Mage_Core_Block_Template {

}

私はこれを管理者コントローラーによって実行し、renderAction()火をつけています。

4

1 に答える 1

5

メソッドrenderAction()のdie()を削除します

class AnattaDesign_AbandonedCarts_WidgetController extends Mage_Adminhtml_Controller_Action {

    ....

    public function renderAction() {
        $html = $this->getLayout()->createBlock( 'anattadesign_abandonedcarts/widget')
                ->setTemplate( 'coming.phtml' )
                ->toHtml();
        $this->getResponse()->setBody( $html );
    }
}
于 2012-11-03T20:30:25.537 に答える