Chcę móc przekazywać dane do wywołania getChildHtml (). Powodem jest to, że wyjście bloku zależy od typu produktu. Więc chcę przekazać produkt do getChildHtml, aby mógł zdecydować o wyniku.
Robię to w środku template/checkout/cart/item/default.phtml
.
Idealnie połączenie wyglądałoby tak:
echo $this->getChildHtml('child_block_name', $_item);
Następnie mój blok może uzyskać typ produktu z elementu i wyświetlić prawidłowy wynik.
Ponieważ zdecydowanie nie jest możliwe przekazanie tych danych getChildHtml
- w jaki sposób można osiągnąć tego rodzaju zachowanie bez konieczności przepisywania bloku podstawowego
Dwa obecnie dostępne rozwiązania są następujące (żadne bardzo atrakcyjne):
1 - Utwórz pomocnika i uzyskaj dostęp do wyjścia HTML za pomocą pomocnika, zamiast pozwolić blokowi i szablonowi renderować go jako ala $this->helper('my_module')->getItemHtml($_item);
2 - Uzyskaj dostęp do bloku potomnego i ustaw na nim dane w szablonie:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
Myślę, że jeśli chodzi o architekturę Magento, numer 2 jest mniejszym z dwóch zła, ale cholernie brzydko wygląda w szablonie.