Вопрос

У меня есть одна настраиваемая вкладка в моем модуле и успешно отобразить одну вывод сетки, но мой вопрос: как мы можем отобразить два блока сериализатора сетки на одной странице? Я попытался выпустить с помощью двух сериализационных блоков с этим кодом.

public function customgridAction()

{
   $this->loadLayout();
    $this->getLayout()->getBlock('regionpage.productgrid')->setProductsGrid($this->getRequest()->getPost('products_grid', null));
    $this->getLayout()->getBlock('regionpage.articlegrid')->setArticlesGrid($this->getRequest()->getPost('articles_grid', null));
    $this->renderLayout();
}

И это то, как выглядит мой макет XML

<regionpage_adminhtml_regionpage_customgrid>
<block type="core/text_list" name="root">
    <block type="regionpage/adminhtml_regionpage_edit_tab_productgrid" name="regionpage.productgrid"/>
    <block type="adminhtml/widget_grid_serializer" name="regionpage_productgrid">
        <reference name="regionpage_productgrid">
            <action method="initSerializerBlock">
                <grid_block_name>regionpage.productgrid</grid_block_name>
                <data_callback>getSelectedProducts</data_callback>
                <hidden_input_name>links[productgrid]</hidden_input_name>
                <reload_param_name>products_grid</reload_param_name>
            </action>
            <action method="addColumnInputName">
                <input_name>position</input_name>
            </action>
        </reference>
    </block>
</block>

 <regionpage_adminhtml_regionpage_customgrid>
    <block type="core/text_list" name="root">
        <block type="regionpage/adminhtml_regionpage_edit_tab_articlegrid" name="regionpage.articlegrid"/>
        <block type="adminhtml/widget_grid_serializer" name="regionpage_articlegrid">
            <reference name="regionpage_articlegrid">
                <action method="initSerializerBlock">
                    <grid_block_name>regionpage.articlegrid</grid_block_name>
                    <data_callback>getSelectedArticles</data_callback>
                    <hidden_input_name>links[articlegrid]</hidden_input_name>
                    <reload_param_name>articles_grid</reload_param_name>
                </action>
                <action method="addColumnInputName">
                    <input_name>position</input_name>
                </action>
            </reference>
        </block>
    </block>
 </regionpage_adminhtml_regionpage_customgrid>

Но он выводит последний блок, а не оба блока.

Я задавал этот вопрос о Stackoverflow иногда назад, но не получил никакого ответа, поэтому я подумал, что он здесь репортировал здесь

Я видел этот мета -вопрос Могу ли я репортировать без ответа на вопросы из переполнения стека?Так что я снова оставил этот вопрос здесь.

Ссылка на вопрос stackoverflow https://stackoverflow.com/questions/13972662/grid-layout-in-magento

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

Решение

Хорошо, я думаю, что взломал.

Проблема, по -видимому, заключается в том, когда вы используете блок упаковки

<block type="core/text_list" name="root">

После того, как вы определили блок имени «root», он будет переопределен, если другой блок с тем же именем появится позже. (Поправьте меня, если я ошибаюсь)

Есть два решения, которые вы можете попробовать.

  1. Объедините оба вашего XML в один раздел

Что сделало бы ваш XML следующим образом

<regionpage_adminhtml_regionpage_customgrid>
    <block type="core/text_list" name="root">
    <block type="regionpage/adminhtml_regionpage_edit_tab_productgrid" name="regionpage.productgrid"/>
    <block type="adminhtml/widget_grid_serializer" name="regionpage_productgrid">
        <reference name="regionpage_productgrid">
            <action method="initSerializerBlock">
                <grid_block_name>regionpage.productgrid</grid_block_name>
                <data_callback>getSelectedProducts</data_callback>
                <hidden_input_name>links[productgrid]</hidden_input_name>
                <reload_param_name>products_grid</reload_param_name>
            </action>
            <action method="addColumnInputName">
                <input_name>position</input_name>
            </action>
        </reference>
    </block>
    <block type="regionpage/adminhtml_regionpage_edit_tab_articlegrid" name="regionpage.articlegrid"/>
        <block type="adminhtml/widget_grid_serializer" name="regionpage_articlegrid">
            <reference name="regionpage_articlegrid">
                <action method="initSerializerBlock">
                    <grid_block_name>regionpage.articlegrid</grid_block_name>
                    <data_callback>getSelectedArticles</data_callback>
                    <hidden_input_name>links[articlegrid]</hidden_input_name>
                    <reload_param_name>articles_grid</reload_param_name>
                </action>
                <action method="addColumnInputName">
                    <input_name>position</input_name>
                </action>
            </reference>
        </block>
    </block>
</regionpage_adminhtml_regionpage_customgrid>
  1. Простая заменить во втором разделе в разделе «Следующий

С помощью эталонного узла, который сделал бы ваш второй раздел выглядеть

<regionpage_adminhtml_regionpage_customgrid>
    <reference name="root">
    <block type="regionpage/adminhtml_regionpage_edit_tab_articlegrid" name="regionpage.articlegrid"/>
        <block type="adminhtml/widget_grid_serializer" name="regionpage_articlegrid">
            <reference name="regionpage_articlegrid">
                <action method="initSerializerBlock">
                    <grid_block_name>regionpage.articlegrid</grid_block_name>
                    <data_callback>getSelectedArticles</data_callback>
                    <hidden_input_name>links[articlegrid]</hidden_input_name>
                    <reload_param_name>articles_grid</reload_param_name>
                </action>
                <action method="addColumnInputName">
                    <input_name>position</input_name>
                </action>
            </reference>
        </block>
    </reference>
</regionpage_adminhtml_regionpage_customgrid>

Надеюсь, это исправлено и достаточно хорошее объяснение :)

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