Comment obtenir tous les blocs enfants dans le contrôleur Magento 2?

11

Je dois obtenir tous les blocs enfants dans le contrôleur en utilisant le nom du bloc parent ou la disposition Magento 2.

Merci d'avance.

Dharmendra Jadav
la source

Réponses:

7

Assurez-vous que votre contrôleur est le même qui charge la disposition dans laquelle se termine votre bloc et ses blocs enfants.

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

La classe Edit étend \ Magento \ Backend \ App \ Action
{
  protected $ resultPageFactory;

  fonction publique __construct (
       Context $ context,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       parent :: __ 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);
  }

}
Amit Singh
la source
1
saras amithsing belle réponse.
Rakesh Jesadiya
Ça marche bien pour moi Merci @ Amit Singh
Dharmendra Jadav
@AmitSingh, veuillez expliquer, $blockInstance->getChildNames();ici getChildNames () signifie?
Payal Patel
0

Vous pouvez obtenir tous les blocs enfants comme celui-ci.

$allblocks = $block->getChildNames();

  foreach($allblocks as $blocks){
    $child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
  }
Abhinav Singh
la source
J'ai essayé toute cette fonction qui est utilisée pour obtenir des blocs enfants mais cela ne fonctionne pas.
Dharmendra Jadav