ฉันต้องการส่งผ่านข้อมูลไปยังการเรียกใช้ getChildHtml () เหตุผลคือผลลัพธ์ของบล็อกขึ้นอยู่กับประเภทของผลิตภัณฑ์ ดังนั้นฉันต้องการส่งผลิตภัณฑ์ไปที่ getChildHtml เพื่อให้สามารถตัดสินใจเกี่ยวกับผลลัพธ์
template/checkout/cart/item/default.phtml
ฉันกำลังทำอยู่ภายในนี้
เป็นการดีที่การโทรจะมีลักษณะดังนี้:
echo $this->getChildHtml('child_block_name', $_item);
จากนั้นบล็อกของฉันจะได้รับประเภทผลิตภัณฑ์จากรายการและแสดงผลลัพธ์ที่ถูกต้อง
เนื่องจากเป็นไปไม่ได้ที่จะส่งผ่านข้อมูลนี้ไปgetChildHtml
- พฤติกรรมประเภทนี้สามารถทำได้โดยไม่ต้องเขียนบล็อกแกนใหม่
สองวิธีที่ฉันมีอยู่ในปัจจุบันมีดังนี้ (ไม่น่าสนใจมาก):
1 - สร้างผู้ช่วยและเข้าถึงเอาต์พุต html ผ่านตัวช่วยแทนที่จะปล่อยให้บล็อกและเทมเพลตแสดงเป็น ala $this->helper('my_module')->getItemHtml($_item);
2 - เข้าถึงบล็อกย่อยและ setData ที่อยู่ด้านในเทมเพลต:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
ฉันคิดว่าในแง่ของสถาปัตยกรรมวีโอไอพีหมายเลข 2 นั้นน้อยกว่าความชั่วร้ายสองอย่าง แต่มันน่าเกลียดน่าดูในเทมเพลต