Làm thế nào để có được tất cả các khối trẻ em trong bộ điều khiển Magento 2?


11

Tôi phải lấy tất cả các khối con trong bộ điều khiển bằng cách sử dụng tên khối cha hoặc bố cục Magento 2.

Cảm ơn trong nâng cao.

Câu trả lời:


7

Hãy chắc chắn rằng bộ điều khiển của bạn giống với tải bố cục trong đó khối của bạn và khối con của nó thoát ra.

sử dụng Magento \ Backend \ App \ Action \ Context;
sử dụng Magento \ Framework \ View \ result \ PageFactory;

lớp Chỉnh sửa mở rộng \ Magento \ Backend \ App \ Action
{
  được bảo vệ $ resultPageFactory;

  chức năng công cộng __construct (
       Bối cảnh $ bối cảnh,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       cha mẹ :: __ xây dựng ($ bối cảnh);
  }

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

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

  $ childBlocks = $ blockInstance-> getChildNames ();

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

}

1
sara amithsing câu trả lời tốt đẹp.
Rakesh Jesadiya

Nó hoạt động tốt với tôi Cảm ơn @ Amit Singh
Dharmendra Jadav

@AmitSingh, Vui lòng giải thích, $blockInstance->getChildNames();ở đây getChildNames () nghĩa là gì?
Payal Patel

0

Bạn có thể nhận được tất cả các khối con như thế này.

$allblocks = $block->getChildNames();

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

Tôi đã thử tất cả các chức năng được sử dụng để có được các khối con nhưng nó không hoạt động.
Dharmendra Jadav
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.