Muszę uzyskać wszystkie bloki podrzędne w kontrolerze, używając nazwy bloku nadrzędnego lub układu Magento 2.
Z góry dziękuję.
Muszę uzyskać wszystkie bloki podrzędne w kontrolerze, używając nazwy bloku nadrzędnego lub układu Magento 2.
Z góry dziękuję.
Odpowiedzi:
Upewnij się, że kontroler jest taki sam, co ładuje układ, w którym wychodzi blok i jego bloki potomne.
użyj Magento \ Backend \ App \ Action \ Context; użyj Magento \ Framework \ View \ Result \ PageFactory; edycja klasy rozszerza \ Magento \ Backend \ App \ Action { chroniony $ resultPageFactory; funkcja publiczna __construct ( Kontekst $ kontekst, PageFactory $ resultPageFactory ) { $ this-> resultPageFactory = $ resultPageFactory; rodzic :: __ konstrukcja ($ kontekst); } $ resultPage = $ this-> resultPageFactory-> create (); $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name'); $ childBlocks = $ blockInstance-> getChildNames (); foreach ($ childBlocks as $ blockName) { $ block = $ resultPage-> getLayout () -> getBlock ($ blockName); } }
$blockInstance->getChildNames();
tutaj getChildNames () oznacza?
Możesz uzyskać wszystkie bloki potomne w ten sposób.
$allblocks = $block->getChildNames();
foreach($allblocks as $blocks){
$child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
}