Frage

Ich habe in meinem Modul eine benutzerdefinierte Registerkarte erstellt und eine Gitterausgabe erfolgreich angezeigt. Meine Frage ist jedoch, wie wir zwei Gitter -Serializer -Block auf einer Seite anzeigen können. Ich habe versucht, mit diesem Code zwei Serializer -Block zu rufen.

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();
}

Und so sieht mein Layout XML aus

<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>

Aber es gibt den letzten Block aus, nicht beide Block.

Ich hatte diese Frage zu Stackoverflow schon vor Ort gestellt, aber ich habe keine Antwort erhalten, also dachte ich, ich würde sie hier neu veröffentlicht

Ich habe diese Meta -Frage gesehen Kann ich unbeantwortete Fragen aus dem Stack -Überlauf erneut veröffentlichen?Also habe ich diese Frage hier erneut veröffentlicht.

Stackoverflow -Frage -Link https://stackoverflow.com/questions/13972662/grid-layout-in-magento

War es hilfreich?

Lösung

Ok, ich glaube, ich habe es geknackt.

Das Problem scheint zu sein, wenn Sie den Verpackungsblock verwenden

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

Sobald Sie einen Namensblock "Root" definiert haben, wird er überschrieben, wenn ein anderer Block mit demselben Namen später kommt. (Korrigiere mich, wenn ich falsch liege)

Es gibt zwei Lösungen, die Sie ausprobieren können.

  1. Kombinieren Sie beide XML in einem Abschnitt

Das würde Ihr XML wie folgt machen

<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. Einfacher Ersetzen in Ihrem zweiten Abschnitt Der folgende Abschnitt

Mit einem Referenzknoten, der Ihren zweiten Abschnitt aussehen lässt

<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>

Hoffe das repariert es und ist eine gute Erklärung :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top