Ich möchte Daten an den Aufruf getChildHtml () übergeben können. Der Grund dafür ist, dass die Ausgabe des Blocks von einem Produkttyp abhängt. Also möchte ich das Produkt an getChildHtml übergeben, damit es über die Ausgabe entscheiden kann.
Ich mache das drinnen template/checkout/cart/item/default.phtml
.
Im Idealfall würde der Aufruf folgendermaßen aussehen:
echo $this->getChildHtml('child_block_name', $_item);
Dann kann mein Block den Produkttyp aus dem Artikel abrufen und die richtige Ausgabe anzeigen.
Da es definitiv nicht möglich ist, diese Daten weiterzugeben getChildHtml
- wie sonst kann diese Art von Verhalten erreicht werden, ohne dass der Kernblock neu geschrieben werden muss
Die beiden Lösungen, die ich derzeit habe, sind wie folgt (beide nicht sehr attraktiv):
1 - Erstellen Sie einen Helfer und greifen Sie über den Helfer auf die HTML-Ausgabe zu, anstatt einen Block und eine Vorlage als Ganzes rendern zu lassen $this->helper('my_module')->getItemHtml($_item);
2 - Greifen Sie auf den untergeordneten Block zu und setzen Sie die Daten in der Vorlage:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
Ich denke, in Bezug auf die Magento-Architektur ist Nummer 2 das kleinere von zwei Übeln, aber es ist verdammt hässlich, wenn man in eine Vorlage schaut.