ฉันต้องให้เด็ก ๆ บล็อคทั้งหมดในคอนโทรลเลอร์โดยใช้ชื่อบล็อกหลักหรือเลย์เอาต์ 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);
}