Tengo que hacer que todos los niños bloqueen en el controlador usando el nombre del bloque principal o el diseño Magento 2.
Gracias de antemano.
Tengo que hacer que todos los niños bloqueen en el controlador usando el nombre del bloque principal o el diseño Magento 2.
Gracias de antemano.
Respuestas:
Asegúrese de que su controlador sea el mismo que carga el diseño en el que sale su bloque y sus bloques secundarios.
use Magento \ Backend \ App \ Action \ Context; use Magento \ Framework \ View \ Result \ PageFactory; clase Editar se extiende \ Magento \ Backend \ App \ Action { protegido $ resultPageFactory; función pública __construct ( Contexto $ context, PageFactory $ resultPageFactory ) { $ this-> resultPageFactory = $ resultPageFactory; parent :: __ construct ($ context); } $ resultPage = $ this-> resultPageFactory-> create (); $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name'); $ childBlocks = $ blockInstance-> getChildNames (); foreach ($ childBlocks como $ blockName) { $ block = $ resultPage-> getLayout () -> getBlock ($ blockName); } }
$blockInstance->getChildNames();
aquí getChildNames () significa?
Puede obtener todos los bloques secundarios como este.
$allblocks = $block->getChildNames();
foreach($allblocks as $blocks){
$child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
}