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);
}