Bagaimana cara mendapatkan semua anak blok di kontroler Magento 2?


11

Saya harus membuat semua anak memblokir di controller menggunakan nama blok orang tua atau tata letak Magento 2.

Terima kasih sudah mahir.

Jawaban:


7

Pastikan pengontrol Anda sama dengan yang memuat tata letak di mana blok Anda dan blok anaknya keluar.

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

Edit kelas meluas \ Magento \ Backend \ App \ Action
{
  protected $ resultPageFactory;

  fungsi publik __construct (
       Konteks $ konteks,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       parent :: __ construct ($ context);
  }

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

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

  $ childBlocks = $ blockInstance-> getChildNames ();

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

}

1
saras menyapa jawaban yang bagus.
Rakesh Jesadiya

Ini berfungsi dengan baik untuk saya. Terima kasih @ Amit Singh
Dharmendra Jadav

@AmitSingh, Tolong jelaskan, di $blockInstance->getChildNames();sini getChildNames () artinya?
Payal Patel

0

Anda bisa mendapatkan semua blok anak seperti ini.

$allblocks = $block->getChildNames();

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

Saya telah mencoba semua fungsi yang digunakan untuk mendapatkan blok anak tetapi tidak berfungsi.
Dharmendra Jadav
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.