Come ottenere tutti i blocchi di bambini nel controller Magento 2?


Risposte:


7

Assicurati che il tuo controller sia lo stesso che carica il layout in cui esce il tuo blocco e i suoi blocchi figlio.

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

class Edit estende \ Magento \ Backend \ App \ Action
{
  protetto $ resultPageFactory;

  funzione pubblica __construct (
       Context $ context,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       parent :: __ construct ($ contesto);
  }

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

  $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name');

  $ childBlocks = $ blockInstance-> getChildNames ();

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

}

1
saras amithsing bella risposta.
Rakesh Jesadiya,

Per me funziona benissimo Grazie @ Amit Singh
Dharmendra Jadav il

@AmitSingh, per favore spiega, $blockInstance->getChildNames();qui getChildNames () significa?
Payal Patel,

0

Puoi ottenere tutti i blocchi figlio in questo modo.

$allblocks = $block->getChildNames();

  foreach($allblocks as $blocks){
    $child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
  }

Ho provato tutta quella funzione che viene utilizzata per ottenere blocchi secondari ma non funziona.
Dharmendra Jadav
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.