Дисплей 2 сетки в форме администратора
-
16-10-2019 - |
Вопрос
У меня есть одна настраиваемая вкладка в моем модуле и успешно отобразить одну вывод сетки, но мой вопрос: как мы можем отобразить два блока сериализатора сетки на одной странице? Я попытался выпустить с помощью двух сериализационных блоков с этим кодом.
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», он будет переопределен, если другой блок с тем же именем появится позже. (Поправьте меня, если я ошибаюсь)
Есть два решения, которые вы можете попробовать.
- Объедините оба вашего 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>
Простая заменить во втором разделе в разделе «Следующий
С помощью эталонного узла, который сделал бы ваш второй раздел выглядеть
<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>
Надеюсь, это исправлено и достаточно хорошее объяснение :)