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.

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);
  }

}

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);
  }

J'ai essayé toute cette fonction qui est utilisée pour obtenir des blocs enfants mais cela ne fonctionne pas.
Dharmendra Jadav
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.