親ブロック名またはレイアウトMagento 2を使用して、すべての子ブロックをコントローラーで取得する必要があります。
よろしくお願いします。
親ブロック名またはレイアウトMagento 2を使用して、すべての子ブロックをコントローラーで取得する必要があります。
よろしくお願いします。
回答:
ブロックとその子ブロックが存在するレイアウトをロードするコントローラーが同じであることを確認してください。
Magento \ Backend \ App \ Action \ Contextを使用します。
Magento \ Framework \ View \ Result \ PageFactoryを使用します。
Editクラスは\ Magento \ Backend \ App \ Actionを拡張します
{
保護された$ resultPageFactory;
パブリック関数__construct(
コンテキスト$ context、
PageFactory $ resultPageFactory
){
$ this-> resultPageFactory = $ resultPageFactory;
親:: __ construct($ context);
}
$ 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);
}