Como obter todos os blocos filhos no controlador Magento 2?

11

Eu tenho que obter todos os filhos do bloco no controlador usando o nome do bloco pai ou o layout Magento 2.

Obrigado antecipadamente.

Dharmendra Jadav
fonte

Respostas:

7

Verifique se o seu controlador é o mesmo que carrega o layout no qual seu bloco e seus blocos filhos saem.

use Magento \ Backend \ App \ Action \ Context;
use Magento \ Framework \ View \ Result \ PageFactory;

A classe Edit estende \ Magento \ Backend \ App \ Action
{
  protected $ resultPageFactory;

  função pública __construct (
       Contexto $ context,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       parent :: __ construct ($ context);
  }

  $ resultPage = $ this-> resultPageFactory-> create ();

  $ blockInstance = $ resultPage-> getLayout () -> getBlock ('seu.block.nome');

  $ childBlocks = $ blockInstance-> getChildNames ();

  foreach ($ childBlocks as $ blockName) {
    $ block = $ resultPage-> getLayout () -> getBlock ($ blockName);
  }

}
Amit Singh
fonte
1
saras com uma boa resposta.
Rakesh Jesadiya
É bom trabalhar para mim Obrigado @ Amit Singh
Dharmendra Jadav
@AmitSingh, por favor, explique, $blockInstance->getChildNames();aqui getChildNames () significa?
Payal Patel
0

Você pode obter todos os blocos filhos como este.

$allblocks = $block->getChildNames();

  foreach($allblocks as $blocks){
    $child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
  }
Abhinav Singh
fonte
Eu tentei toda essa função que é usada para obter blocos filhos, mas não está funcionando.
Dharmendra Jadav