Я маю отримати всі дочірні блоки в контролері, використовуючи назву батьківського блоку або макет 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);
}