Reputation: 5381
I have create one custom tab in my module and display one grid output successfully, but my question is how we can display two grid serializer block in one page? i have tried to out put with calling two serializer block with this code.
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();
}
And this is what my layout xml look like
<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>
But it output last block not both block.
Upvotes: 1
Views: 997
Reputation: 5381
Ok I think I have cracked it.
The problem appears to be when you are using the wrapping block
<block type="core/text_list" name="root">
Once you have defined a block of name "root" then it will be overridden if another block with the same name comes along later. (Correct me if I am wrong)
There are two solutions you could try.
Which would make your xml as follows
<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>
Simple replace in your second section the follow section
With a reference node which would make your second section look like
<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>
Here is a magento stack exchange answer https://magento.stackexchange.com/questions/3376/grid-layout-in-magento/3804#3804
Upvotes: 1