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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top