컨트롤러 Magento 2에서 모든 하위 블록을 얻는 방법은 무엇입니까?


답변:


7

블록과 하위 블록이 종료되는 레이아웃을로드하는 컨트롤러가 동일한 지 확인하십시오.

Magento \ Backend \ App \ Action \ Context를 사용하십시오.
Magento \ Framework \ View \ Result \ PageFactory를 사용하십시오.

Edit 클래스는 \ Magento \ Backend \ App \ Action을 확장합니다.
{
  보호 된 $ resultPageFactory;

  공공 함수 __construct (
       문맥 $ context,
       PageFactory $ resultPageFactory
  ) {
       $ this-> resultPageFactory = $ resultPageFactory;
       parent :: __ construct ($ 문맥);
  }

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

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

  $ childBlocks = $ blockInstance-> getChildNames ();

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

}

1
좋은 답변을 암시하는 사라 스.
Rakesh Jesadiya

그것은 나를 위해 잘 작동합니다 Thanks @ Amit Singh
Dharmendra Jadav

@AmitSingh, $blockInstance->getChildNames();여기 getChildNames () 의미합니까?
Payal Patel

0

이런 식으로 모든 자식 블록을 얻을 수 있습니다.

$allblocks = $block->getChildNames();

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

자식 블록을 얻는 데 사용되는 모든 기능을 시도했지만 작동하지 않습니다.
Dharmendra Jadav
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.