ความแตกต่างระหว่าง <remove name =” "/> และ <action method =” unsetChild”> ในรูปแบบ


21

ความแตกต่างระหว่าง<action method=”unsetChild”>และ<remove name=""/>คืออะไร?

ฟังก์ชั่นทั้งสองนี้ใช้เพื่อลบบล็อกออกจากเลย์เอาต์

มีคนอธิบายด้วยตัวอย่างได้ไหม

คำตอบ:


21

<remove name="" />Mage_Core_Model_Layoutดำเนินการในขอบเขตทั่วโลกของบล็อก เหล่านี้จะถูกเก็บในMage_Core_Model_Layout::generateXml()และใช้เพื่อป้องกันการบล็อกที่มีชื่อระบุจากแม้จะถูก instantiated นอกจากนี้บล็อกเด็ก ๆ ประกาศหา<remove />บล็อกเอ็ดจะยังไม่ได้รับการยกตัวอย่าง

<action method="" />อาคาMage_Core_Block_Abstract::unsetChild()เป็นวิธีการบล็อกระดับซึ่งยกเลิกการแสดงรายการบล็อกลูกที่ระบุ (โดยนามแฝงไม่ใช่ชื่อ ) จากอินสแตนซ์บล็อกหลักที่การดำเนินการถูกเรียก สิ่งนี้มักส่งผลให้บล็อก "หายไป" จากเอาต์พุตที่แสดงผลแม้ว่าอินสแตนซ์บล็อกยังคงถูกสร้างขึ้น ใช้ร่วมกับ::append()หรือ::insert()วิธีการมันถูกใช้เพื่อทำการ "ย้าย"


เพียงแค่เพิ่มลงในสิ่งนี้หากบล็อกไม่มีชื่อแทนมันจะตรงกับชื่อ
Ben Crook

2
ที่ถูกต้องเมื่อไม่มีนามแฝงให้บริการที่สำหรับเด็กที่มีการตั้งค่าของมันalias name👍
เครื่องหมายที่สำคัญ

2

<remove name="" />เมื่อเสร็จสิ้นทุกเลย์เอาท์วีโอไอพีจะทำการลบบล็อกที่มีชื่อระบุ = "" โดยไม่คำนึงถึงว่ารูปแบบใดถูกจัดการเพิ่มเข้าไป การใช้วิธีนี้มันเป็นไปไม่ได้ที่จะลบบล็อกจากสถานที่หนึ่งแล้วเพิ่มไปยังอีก

<action method="unsetChild">ทำงานเฉพาะในบริบทที่กำลังใช้งานอยู่ unsetChild ถูกสร้างขึ้นสำหรับย้ายบล็อกที่มีอยู่จากที่หนึ่งไปอีกที่หนึ่ง คุณต้องใช้วิธีนี้หากคุณต้องการลบบล็อกที่เฉพาะเจาะจงออกจากที่จับเค้าโครงที่เฉพาะเจาะจงแล้วใส่มันไปยังตำแหน่งอื่นหรือที่จับเค้าโครง


ไม่มาก ดูคำตอบของฉันสำหรับการแก้ไข
benmarks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.