親ブロック名またはレイアウト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);
}