Условная вкладка с подсчетом, как сетка, с страницей

magento.stackexchange https://magento.stackexchange.com/questions/5440

Вопрос

Я добавил вкладку подсчетов, похожей на сетку, в вкладку «Простые продукты условно проводят как наблюдатель», как это:

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

В соответствии с тем, что для страниц сериализатор сетка на Product Page вызывает контроллер для страниц / показывает больше продуктов.

Проблема в том, что этот блок даже не указан в $this->getLayout()->getAllblocks(); в то время как он перечислен, когда я загружаю сетку с Layout.xml.

Итак, стандарт

$this->getLayout()->getBlock('catalog.product.edit.tab.mymodule.simplerelation')
             ->setProductsMymodule($this->getRequest()->getPost('products_Mymodule', null));

Не работает, какие идеи о том, как я все еще могу обдать блок сериализатора и установить продукты, будут оценены.

PS: просто переключение на обычный способ загрузки сериализаторной сетки не является вариантом. Мне нужно, чтобы это было загружено динамически, есть еще одна проверка, чтобы увидеть, может ли вкладка быть показана или нет.

С уважением

Это было полезно?

Решение

После некоторой отладки оказалось, что мне нужно приближаться к вещам, скорее как обычный звонок Ajax и просто воссоздать блок.

    $this->_initProduct();
    $this->loadLayout();
    $this->getResponse()->setBody($this->getLayout()->createBlock('mymodule/adminhtml_catalog_product_edit_tab_relationsimpleproducts', 'catalog.product.edit.tab.mymodule.simplerelation')->toHtml());

Теперь сетка динамично загружена на вкладку, и все функции страниц работают.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top