Magento Ajax - how, um programmgesteuert anzeigen benutzerdefinierter block vom Controller (dem HTML-Inhalt ist immer leer)

Ich versuche, eine Anzeige zu blockieren, die als Teil einer Antwort auf eine ajax-call.
Alles funktioniert, außer, dass ich nicht den controller auf der echo-Vorlage, HTML-code.

Mein Modul class:

class MyModule_Ajax_ProductController extends Mage_Catalog_ProductController {

    public function indexAction() {

        if ($product = $this->_initProduct()) {

            echo '<div>hello</div>'; //this works

            echo $this->getLayout()->createBlock('ajax/product')->setTemplate('mymodule_ajax/product.phtml')->toHtml();

            //I also tried:
            //$layout = $this->getLayout();
            //$update = $layout->getUpdate();
            //$update->load('ajax_product_index'); 
            //$layout->generateXml();
            //$layout->generateBlocks();
            //$output = $layout->getOutput();
            //echo $output;

        }
    }
}

Innerhalb meiner template-Datei Produkt.phtml - dieses HTML wird nie gezeigt.
(gespeichert in app/design/frontend/default/default/template/mymodule_ajax/Produkt.phtml)

<div>HERE!</div>

Mein block-Klasse:

class MyModule_Ajax_Block_Product extends Mage_Catalog_Block_Product
{
    private $product;

    protected function _construct()
    {
        parent::_construct();
        $this->setTemplate('mymodule_ajax/product.phtml');
    }

    protected function _toHtml() {
        return parent::_toHtml();
    }

    public function setProduct($product) {
        $this->product = $product;
        return $this;
    }

    public function getProduct() {
        return $this->product;
    }

}

Meine layout/mymodule_ajax.xml

<?xml version="1.0"?>
<layout>

    <ajax_product_index>
        <reference name="root">
            <block type="ajax/project" name="root" output="toHtml" template="mymodule_ajax/product.phtml"/>
        </reference>
    </ajax_product_index>

</layout>

Ich gehe davon aus, dass, weil ich bin einrichten die Vorlage programmgesteuert in meinem block-Klasse, die ich nicht benötigen, sollten Sie das Modul verweisen?
Das entfernen der Referenz macht keinen Unterschied.

Bekomme ich keine PHP-Fehler, der HTML angezeigt rendert

<html>
<head></head>
<body></body>
</html>

Ich kann einfach nicht herausfinden, was ich falsch mache?
Ich bin mit Magento CE 1.8.1

InformationsquelleAutor Natacha Beaugeais | 2014-04-27

Schreibe einen Kommentar