Saya harus membuat semua anak memblokir di controller menggunakan nama blok orang tua atau tata letak Magento 2.
Terima kasih sudah mahir.
Saya harus membuat semua anak memblokir di controller menggunakan nama blok orang tua atau tata letak Magento 2.
Terima kasih sudah mahir.
Jawaban:
Pastikan pengontrol Anda sama dengan yang memuat tata letak di mana blok Anda dan blok anaknya keluar.
gunakan Magento \ Backend \ App \ Action \ Context; gunakan Magento \ Framework \ View \ Result \ PageFactory; Edit kelas meluas \ Magento \ Backend \ App \ Action { protected $ resultPageFactory; fungsi publik __construct ( Konteks $ konteks, PageFactory $ resultPageFactory ) { $ this-> resultPageFactory = $ resultPageFactory; parent :: __ construct ($ context); } $ resultPage = $ this-> resultPageFactory-> create (); $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name'); $ childBlocks = $ blockInstance-> getChildNames (); foreach ($ childBlocks sebagai $ blockName) { $ block = $ resultPage-> getLayout () -> getBlock ($ blockName); } }
$blockInstance->getChildNames();
sini getChildNames () artinya?
Anda bisa mendapatkan semua blok anak seperti ini.
$allblocks = $block->getChildNames();
foreach($allblocks as $blocks){
$child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
}