Tôi muốn có thể truyền dữ liệu đến cuộc gọi getChildHtml (). Lý do là, đầu ra của khối phụ thuộc vào loại sản phẩm. Vì vậy, tôi muốn chuyển sản phẩm cho getChildHtml để nó có thể quyết định đầu ra.
Tôi đang làm điều này bên trong template/checkout/cart/item/default.phtml
.
Lý tưởng nhất là cuộc gọi sẽ như sau:
echo $this->getChildHtml('child_block_name', $_item);
Sau đó, khối của tôi có thể lấy loại sản phẩm từ mặt hàng và hiển thị đầu ra chính xác.
Vì chắc chắn không thể truyền dữ liệu này đến getChildHtml
- làm thế nào loại hành vi này có thể đạt được mà không phải viết lại khối lõi
Hai giải pháp tôi hiện đang có như sau (không hấp dẫn lắm):
1 - Tạo một trình trợ giúp và truy cập đầu ra html thông qua trình trợ giúp thay vì để một khối và mẫu kết xuất nó ala $this->helper('my_module')->getItemHtml($_item);
2 - Truy cập khối con và setData trên nó bên trong mẫu:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
Tôi nghĩ về mặt kiến trúc Magento, số 2 là ít tệ hơn của hai tệ nạn, nhưng nó trông thật xấu xí khi nhìn vào một khuôn mẫu.