Magento 2 denetleyicisindeki tüm çocuk bloklarını nasıl alabilirim?


Yanıtlar:


7

Denetleyicinizin, bloğunuzun ve alt bloklarının çıktığı düzeni yükleyen aynı olduğundan emin olun.

Magento \ Backend \ App \ Action \ Context kullanın;
Magento \ Framework \ View \ Result \ PageFactory kullanın;

class Edit, \ Magento \ Backend \ App \ Action klasörünü genişletir
{
  korumalı $ sonuçPageFactory;

  kamu işlevi __construct (
       Bağlam $ bağlam,
       PageFactory $ sonuçPageFactory
  ) {
       $ this-> sonuçPageFactory = $ sonuçPageFactory;
       üst :: __ yapı ($ bağlamı);
  }

  $ sonuçPage = $ this-> sonuçPageFactory-> create ();

  $ blockInstance = $ sonuçPage-> getLayout () -> getBlock ('your.block.name');

  $ childBlocks = $ blockInstance-> getChildNames ();

  foreach ($ childBlocks $ blockName olarak) {
    $ block = $ sonuçPage-> getLayout () -> getBlock ($ blockName);
  }

}

1
saras amithsing güzel cevap.
Rakesh Jesadiya

Benim için iyi çalışıyor Teşekkürler @ Amit Singh
Dharmendra Jadav

@AmitSingh, Lütfen açıklayın, $blockInstance->getChildNames();burada getChildNames () demek?
Payal Patel

0

Tüm çocuk bloklarını bu şekilde alabilirsiniz.

$allblocks = $block->getChildNames();

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

Çocuk blokları almak için kullanılan tüm bu işlevi denedim ama çalışmıyor.
Dharmendra Jadav
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.