Я хочу иметь возможность передавать данные в вызов getChildHtml (). Причина в том, что выход блока зависит от типа продукта. Поэтому я хочу передать продукт в getChildHtml, чтобы он мог принять решение о выводе.
Я делаю это внутри template/checkout/cart/item/default.phtml
.
В идеале звонок должен выглядеть так:
echo $this->getChildHtml('child_block_name', $_item);
Тогда мой блок может получить тип продукта из элемента и отобразить правильный вывод.
Поскольку это определенно невозможно передать эти данные getChildHtml
- как еще можно добиться такого поведения без необходимости переписывать основной блок
В настоящее время у меня есть два решения (ни одно из них не очень привлекательное):
1 - Создайте помощник и получите доступ к выводу html через помощника вместо того, чтобы позволить блоку и шаблону визуализировать его $this->helper('my_module')->getItemHtml($_item);
2 - Доступ к дочернему блоку и setData для него внутри шаблона:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
Я думаю, что с точки зрения архитектуры Magento, число 2 - меньшее из двух зол, но чертовски уродливо смотрит в шаблон.