ฉันต้องให้เด็ก ๆ บล็อคทั้งหมดในคอนโทรลเลอร์โดยใช้ชื่อบล็อกหลักหรือเลย์เอาต์ Magento 2
ขอบคุณล่วงหน้า.
ฉันต้องให้เด็ก ๆ บล็อคทั้งหมดในคอนโทรลเลอร์โดยใช้ชื่อบล็อกหลักหรือเลย์เอาต์ Magento 2
ขอบคุณล่วงหน้า.
คำตอบ:
ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์ของคุณเหมือนกันซึ่งโหลดโครงร่างที่บล็อกของคุณและบล็อกลูกออก
ใช้ Magento \ Backend \ App \ Action \ บริบท; ใช้ Magento \ Framework \ View \ Result \ PageFactory; การแก้ไขคลาสขยาย \ Magento \ Backend \ App \ Action { ป้องกัน $ resultPageFactory; ฟังก์ชั่นสาธารณะ __ โครงสร้าง ( บริบท $ บริบท PageFactory $ resultPageFactory ) { $ this-> resultPageFactory = $ resultPageFactory; ผู้ปกครอง :: __ สร้าง ($ บริบท); } $ resultPage = $ this-> resultPageFactory-> create (); $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name'); $ childBlocks = $ blockInstance-> getChildNames (); foreach ($ childBlocks เป็น $ blockName) { $ block = $ resultPage-> getLayout () -> getBlock ($ blockName); } }
$blockInstance->getChildNames();
ที่นี่ getChildNames () หมายถึงอะไร
คุณสามารถรับบล็อกลูกทั้งหมดเช่นนี้
$allblocks = $block->getChildNames();
foreach($allblocks as $blocks){
$child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
}