Я должен получить все дочерние блоки в контроллере, используя имя родительского блока или макет Magento 2.
Заранее спасибо.
Я должен получить все дочерние блоки в контроллере, используя имя родительского блока или макет Magento 2.
Заранее спасибо.
Ответы:
Убедитесь, что ваш контроллер такой же, который загружает макет, из которого выходит ваш блок и его дочерние блоки.
использовать Magento \ Backend \ App \ Action \ Context; использовать Magento \ Framework \ View \ Result \ PageFactory; Класс Edit extends \ Magento \ Backend \ App \ Action { защищенный $ resultPageFactory; публичная функция __construct ( Context $ context, PageFactory $ resultPageFactory ) { $ this-> resultPageFactory = $ resultPageFactory; Родитель :: __ конструкт ($ контекст); } $ 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();
значит getChildNames ()?
Вы можете получить все дочерние блоки, как это.
$allblocks = $block->getChildNames();
foreach($allblocks as $blocks){
$child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
}