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