Я маю отримати всі дочірні блоки в контролері, використовуючи назву батьківського блоку або макет Magento 2.
Дякую заздалегідь.
Я маю отримати всі дочірні блоки в контролері, використовуючи назву батьківського блоку або макет Magento 2.
Дякую заздалегідь.
Відповіді:
Переконайтесь, що ваш контролер однаковий, який завантажує макет, в якому ваш блок та його дочірні блоки виходять.
використовувати Magento \ Backend \ App \ Action \ Context; використовувати Magento \ Framework \ View \ Result \ PageFactory; клас редагування поширюється \ Magento \ Backend \ App \ Action { захищений $ resultPageFactory; публічна функція __construct ( Контекст $ контексту, 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);
}