Pestaña condicional con una red upsada con paginación
-
16-10-2019 - |
Pregunta
He agregado una cuadrícula similar a la pestaña de productos simples condicionalmente a un observador como este:
$block = $observer->getEvent()->getBlock();
if ($block instanceof Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs) {
if ((Mage::app()->getRequest()->getActionName() == 'edit' || Mage::app()->getRequest()->getParam('type')) && Mage::registry('current_product')->getTypeId() == "simple") {
$product_content = $block->getLayout()->createBlock('mymodule/adminhtml_catalog_product_edit_tab_relationsimpleproducts', 'catalog.product.edit.tab.mymodule.simplerelation')->toHtml();
$serialize_block = $block->getLayout()->createBlock('adminhtml/widget_grid_serializer');
$serialize_block->initSerializerBlock('catalog.product.edit.tab.mymodule.simplerelation', 'getSelectedMymoduleProducts', 'links[mymodule]', 'products_mymodule');
$serialize_block->addColumnInputName('order_position');
$serialize_block->addColumnInputName('enabled_on_child');
$product_content .= $serialize_block->toHtml();
$block->addTab('simpleproductslink', array(
'label' => Mage::helper('adminhtml')->__('MyLabel'),
'title' => Mage::helper('adminhtml')->__('MyLabel'),
'content' => $product_content,
));
}
}
}
Tal como está, para la paginación, una cuadrícula de servidumbre en una página de productos llama a un controlador para paginación / mostrando más productos.
El problema es que este bloque ni siquiera se enumera en $this->getLayout()->getAllblocks();
mientras se enumera cuando carga la cuadrícula del diseño.xml.
Entonces el estándar
$this->getLayout()->getBlock('catalog.product.edit.tab.mymodule.simplerelation')
->setProductsMymodule($this->getRequest()->getPost('products_Mymodule', null));
No funciona, cualquier idea sobre cómo todavía puedo adherir el bloque de serializador y establecer los productos sería apreciado.
PD: Simplemente cambiar a la forma normal de cargar una cuadrícula de serializador no es una opción. Necesito esto cargado dinámicamente, se incluye otra verificación para ver si la pestaña se puede mostrar o no.
Atentamente
Solución
Después de la depuración, resultó que necesitaba abordar las cosas más como una llamada regular de Ajax y recrear el bloque.
$this->_initProduct();
$this->loadLayout();
$this->getResponse()->setBody($this->getLayout()->createBlock('mymodule/adminhtml_catalog_product_edit_tab_relationsimpleproducts', 'catalog.product.edit.tab.mymodule.simplerelation')->toHtml());
Ahora la cuadrícula está cargada dinámicamente en la pestaña y todas las funciones de paginación funcionan.