Admin-Grid-Container wird nicht geladen

7

Zunächst versuche ich, einen Gittercontainer zu laden und die Containerüberschrift anzuzeigen. Meine Blockdatei funktioniert einwandfrei. Der Containerpfad lautet Super-> Awesome-> Block-> Adminhtml-> Awesome.php

<?php
class Super_Awesome_Block_Adminhtml_Awesome extends Mage_Adminhtml_Block_Widget_Grid_Container
{
    public function __construct()
    {
        $this->_blockGroup = 'super_awesome';
        $this->_controller = 'adminhtml_awesome';
        $this->_headerText = Mage::helper('super_awesome')->__('Manage');
        parent::__construct();
    }

}

Layoutdatei super_awesome.xml

<?xml version="1.0"?>
<layout>
    <adminhtml_example_index>
        <reference name="content">
            <block type="super_awesome/adminhtml_awesome" name="super_awesome"></block>
        </reference>
    </adminhtml_example_index>
</layout>

Wenn ich etwas im Inneren wiedergebe public function __construct(), wird der Inhalt angezeigt __contruct(), aber wenn Sie die oben beschriebene Methode hinzufügen , wird eine leere Seite angezeigt. Muss ich auch einen internen Block (Grid.php) hinzufügen, damit mein Containertext angezeigt wird? Containerblock Awesome.php sollte in Grid.php geändert werden?

Config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Super_Awesome>
            <version>0.1.0</version>
        </Super_Awesome>
    </modules>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <super_awesome before="Mage_Adminhtml">Super_Awesome</super_awesome>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
    <adminhtml>
        <layout>
            <updates>
                <super_awesome>
                    <file>super_awesome.xml</file>
                </super_awesome>
            </updates>
        </layout>
    </adminhtml>
    <global>
        <blocks>
            <super_awesome>
                <class>Super_Awesome_Block</class>
            </super_awesome>
        </blocks>
        <helpers>
            <super_awesome>
                <class>Super_Awesome_Helper</class>
            </super_awesome>
        </helpers>
    </global>
</config>
amitshree
quelle
Hast du deine Super_Awesome_Block_Adminhtml_Awesome_Grid.php?
Adarsh ​​Khatri

Antworten:

3

Der Code, den Sie in Ihrer __construct-Methode hinzufügen, legt die Details für den internen Block fest, den Sie meiner Meinung nach vermissen.

public function __construct()
    {
        $this->_blockGroup = 'super_awesome';
        $this->_controller = 'adminhtml_awesome';
        $this->_headerText = Mage::helper('super_awesome')->__('Manage');
        parent::__construct();
    }

Diese Einstellungen werden in der übergeordneten Methode _prepareLayout () wie folgt verwendet.

protected function _prepareLayout()
{
    $this->setChild( 'grid',
        $this->getLayout()->createBlock( $this->_blockGroup.'/' . $this->_controller . '_grid',
        $this->_controller . '.grid')->setSaveParametersInSession(true) );
    return parent::_prepareLayout();
}

Für Sie wird dieses Codebit als enden

  $this->getLayout()->createBlock('super_awesome/adminhtml_awesome_grid');

Das heißt, Sie müssen den Block erstellen, der Super_Awesome_Block_Adminhtml_Awesome_Griderweitert werden soll Mage_Adminhtml_Block_Widget_Grid.

Mage_Adminhtml_Block_Poll_Grid könnte als Beispiel für diesen fehlenden Gitterblock verwendet werden.

James Anelay - TheExtensionLab
quelle