在Magento的管理模块中显示模板

时间:2016-01-31 05:19:42

标签: php xml magento admin

我是Magento的新人。我正在尝试为Magento Admin面板开发自定义模块。我的代码如下

位置:app / etc / modules

Digitab_Brandlogo.xml

<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Digitab_Brandlogo>
            <active>true</active>
            <codePool>local</codePool>
        </Digitab_Brandlogo>
    </modules>
</config>

位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml

logo.php

<?php
    class Digitab_Brandlogo_Block_Adminhtml_slider extends Mage_Adminhtml_Block_Widget_Grid_Container
    {
        public function __construct()
        {
                $this->_controller = 'adminhtml_brandlogo';
                $this->_blockGroup = 'brandlogo';
                $this->_headerText = Mage::helper('brandlogo')->__('Brand Logo Manager');
            $this->_addButtonLabel = Mage::helper('brandlogo')->__('Add Brand');
                parent::__construct();
        }
    }

位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml

IndexController.php

<?php

class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action 
{
    public function indexAction()
    {                
           $this->loadLayout();
           $this->renderLayout();
    }
}

位置:app / code / local / Digitab / Brandlogo / etc

config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <digitab_brandlogo>
            <version>1.0.0</version>
        </digitab_brandlogo>
    </modules>
    <global>
        <models />
        <blocks />
        <resources />
        <extraconfig />
        <helpers>
            <digitab_brandlogo>
                <class>Digitab_Brandlogo_Helper</class>
            </digitab_brandlogo>
        </helpers>
    </global>
    <admin>
        <routers>
            <digitab_brandlogo>
                <use>admin</use>
                <args>
                    <module>Digitab_brandlogo</module>
                    <frontName>brandlogo</frontName>
                </args>
            </digitab_brandlogo>
        </routers>
    </admin>
    <adminhtml>
        <layout>
        <updates>
            <brandlogo>
                <file>brandlogo.xml</file>
            </brandlogo>
        </updates>
    </layout>
    </adminhtml>
</config>

位置:app / code / local / Digitab / Brandlogo / etc

adminhtml.xml

<?xml version="1.0"?>
<config>
    <menu>
        <digitab translate="title" module="digitab_brandlogo">
            <title>Digitab</title>
            <sort_order>110</sort_order>
            <children>
                <brandlogo>
                    <title>Brand Logo</title>
                    <sort_order>1</sort_order>
                    <action>brandlogo/adminhtml_brandlogo</action>
                </brandlogo>
            </children>
        </digitab>
    </menu>
</config>

位置:app / code / local / Digitab / Brandlogo / Helper

Data.php

<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract
{
}

位置:app / design / adminhtml / default / default / layout

brandlogo.xml

<?xml version="1.0"?> 
<layout version="0.1.0">
    <brandlogo_adminhtml_brandlogo_index>
        <reference name="content">
            <block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
        </reference>
    </brandlogo_adminhtml_brandlogo_index> 
</layout>

位置:应用程序/设计/ adminhtml /默认/默认/模板

test.phtml

ABCD

我得到的输出如下

enter image description here

如何显示模板?谁能在这方面帮助我?感谢





更新

我修改了我的文件,如下所示,但它无效。

位置:app / etc / modules

Digitab_Brandlogo.xml

<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Digitab_Brandlogo>
            <active>true</active>
            <codePool>local</codePool>
        </Digitab_Brandlogo>
    </modules>
</config>

位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml

Brandlogo.php

<?php
    class Digitab_Brandlogo_Block_Adminhtml_Brandlogo extends Mage_Adminhtml_Block_Widget_Grid_Container
    {
        public function __construct()
        {
                $this->_controller = 'adminhtml_brandlogo';
                $this->_blockGroup = 'brandlogo';
                $this->_headerText = Mage::helper('brandlogo')->__('Brand Logo Manager');
            $this->_addButtonLabel = Mage::helper('brandlogo')->__('Add Brand');
                parent::__construct();
        }
    }

位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml

BrandlogoController

<?php

class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action 
{
    public function indexAction()
    {                
           $this->loadLayout();
           $this->renderLayout();
    }
}

位置:app / code / local / Digitab / Brandlogo / etc

config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <digitab_brandlogo>
            <version>1.0.0</version>
        </digitab_brandlogo>
    </modules>
    <global>
        <models />
        <blocks>
            <brandlogo>
                <class>Digitab_Brandlogo_Block</class>
            </brandlogo>
        </blocks>
        <resources />
        <extraconfig />
        <helpers>
            <digitab_brandlogo>
                <class>Digitab_Brandlogo_Helper</class>
            </digitab_brandlogo>
        </helpers>
    </global>
    <admin>
        <routers>
            <digitab_brandlogo>
                <use>admin</use>
                <args>
                    <module>Digitab_brandlogo</module>
                    <frontName>brandlogo</frontName>
                </args>
            </digitab_brandlogo>
        </routers>
    </admin>
    <adminhtml>
    <layout>
        <updates>
            <brandlogo>
                <file>brandlogo.xml</file>
            </brandlogo>
        </updates>
    </layout>
    </adminhtml>
</config>

位置:app / code / local / Digitab / Brandlogo / etc

adminhtml.xml

<?xml version="1.0"?>
<config>
    <menu>
        <digitab translate="title" module="digitab_brandlogo">
            <title>Digitab</title>
            <sort_order>110</sort_order>
            <children>
                <brandlogo>
                    <title>Brand Logo</title>
                    <sort_order>1</sort_order>
                    <action>brandlogo/adminhtml_brandlogo</action>
                </brandlogo>
            </children>
        </digitab>
    </menu>
</config>

位置:app / code / local / Digitab / Brandlogo / Helper

Data.php

<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract
{
}

位置:app / design / adminhtml / default / default / layout

brandlogo.xml

<?xml version="1.0"?> 
<layout version="0.1.0">
    <brandlogo_adminhtml_brandlogo_index>
        <reference name="content">
            <block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
        </reference>
    </brandlogo_adminhtml_brandlogo_index> 
</layout>

位置:应用程序/设计/ adminhtml /默认/默认/模板

test.phtml

ABCD

但它不起作用。现在,我可以在管理面板中看到一个空白页面。感谢

2 个答案:

答案 0 :(得分:4)

这是一个完整的答案:

位置:app / etc / modules

Digitab_Brandlogo.xml

看起来不错。

位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml

此文件夹需要包含以下文件&amp;文件夹:

应用程序/代码/本地/ Digitab / Brandlogo /砌块/ Adminhtml / Brandlogo / Grid.php

<?php 
class Digitab_Brandlogo_Block_Adminhtml_Brandlogo_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
    public function __construct()
    {
        parent::__construct();
        $this->setId('digitab_brandlogo_grid');
        $this->setDefaultSort('increment_id');
        $this->setDefaultDir('DESC');
        $this->setSaveParametersInSession(true);
        $this->setUseAjax(true);
    }

    public function getGridUrl()
    {
        return $this->getUrl('*/*/grid', array('_current'=>true));
    }
}

应用程序/代码/本地/ Digitab / Brandlogo /砌块/ Adminhtml / Brandlogo.php

<?php
class Digitab_Brandlogo_Block_Adminhtml_Brandlogo extends Mage_Adminhtml_Block_Widget_Grid_Container
{
    public function __construct()
    {
        $this->_blockGroup = 'digitab_brandlogo';
        $this->_controller = 'adminhtml_brandlogo';
        $this->_headerText = Mage::helper('digitab_brandlogo')->__('Brand Logo Manager');

        parent::__construct();
        $this->_addButtonLabel = Mage::helper('digitab_brandlogo')->__('Add Brand');
    }
}

位置:app / code / local / Digitab / Brandlogo / Helper / Data.php

<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract {}

位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml / BrandlogoController.php

<?php
class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action 
{
    public function indexAction()
    {                
        $this->loadLayout();
        $this->renderLayout();
    }
}
  

主要问题在于您编写XML文件的方式。

位置:app / code / local / Digitab / Brandlogo / etc

1。 app / code / local / Digitab / Brandlogo / etc / config.xml 以下是config.xml的代码必须如何。

<?xml version="1.0"?>
<config>
    <modules>
        <Digitab_Brandlogo>
            <version>1.0.0</version>
        </Digitab_Brandlogo>
    </modules>
    <global>
        <models />
        <blocks>
            <digitab_brandlogo>
                <class>Digitab_Brandlogo_Block</class>
            </digitab_brandlogo>
        </blocks>
        <resources />
        <extraconfig />
        <helpers>
            <digitab_brandlogo>
                <class>Digitab_Brandlogo_Helper</class>
            </digitab_brandlogo>
        </helpers>
    </global>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>                        
                        <digitab_brandlogo before="Mage_Adminhtml">Digitab_Brandlogo_Adminhtml</digitab_brandlogo>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
    <adminhtml>
        <layout>
            <updates>
               <brandlogo>
                    <file>brandlogo.xml</file>
               </brandlogo>
            </updates>
        </layout>
    </adminhtml>
</config>

2。 app / code / local / Digitab / Brandlogo / etc / adminhtml.xml 以下是config.xml的代码必须如何。

<?xml version="1.0"?>
<config>
    <menu>
        <digitab translate="title" module="digitab_brandlogo">
            <title>Digitab</title>
            <sort_order>110</sort_order>
            <children>
                <brandlogo>
                    <title>Brand Logo</title>
                    <sort_order>1</sort_order>
                    <action>adminhtml/brandlogo/index</action>
                </brandlogo>
            </children>
        </digitab>
    </menu>
</config>

位置:app / design / frontend / adminhtml / default / default / layout / brandlogo.xml

<?xml version="1.0"?> 
<layout version="0.1.0">
    <adminhtml_brandlogo_index>
        <reference name="content">
            <block type="digitab_brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
        </reference>
    </adminhtml_brandlogo_index> 
</layout>

位置:app / design / frontend / adminhtml / default / default / template / test.phtml

看起来很好。

我已在本地计算机上检查过此代码。在此处找到屏幕截图:

enter image description here

请告诉我这是否适合您。

注意::在我的答案中遵循确切的命名公约和文件夹名称以及此处提及的代码

快乐编码......

答案 1 :(得分:3)

这里有一些问题,我将逐步浏览每个文件。

<强> Digitab_Brandlogo.xml

一切都很好。

<强> logo.php

唯一不对的是你的文件名与你的类名(logo!= slider)不同。只需将文件名更改为类名,反之亦然,您应该对此文件有所了解。另外,将类和文件名的第一个字母设为大写。

<强> IndexController.php

与logo.php相同的是,您已经将该文件命名为与该类不同,但是您要将这个文件名更改为类名,因为您已经在很多其他文件中使用了它。文件名应为BrandlogoController.php

<强> config.xml中

因为您定义了一个块,所以您希望在全局范围内定义块。

替换

<blocks />

用这个:

<blocks>
    <digitab_brandlogo>
        <class>Digitab_Brandlogo_Block</class>
    </digitab_brandlogo>
</blocks>

然后,在您的路由器下,您希望确保Brandlogo像这样大写:

<digitab_brandlogo>
    <use>admin</use>
    <args>
        <module>Digitab_Brandlogo</module>
        <frontName>brandlogo</frontName>
    </args>
</digitab_brandlogo>

<强> adminhtml.xml

您的动作就是您想要在控制器中击中的动作。这个(在管理员控制器上)的设置是adminhtml / module_controller_action(如果你停止操作它默认为索引),所以在这种情况下你希望它是这样的:

<action>adminhtml/brandlogo_brandlogo</action>

<强> Data.php

一切都很好。

<强> brandlogo.xml

您的代码需要格式为adminhtml_module_controller_action,所以我们将其更改为以下内容:

<adminhtml_brandlogo_brandlogo_index>

然后在这一行:

<block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>

您正在尝试使用虚构的块类型。还记得早些时候我们将块命名为Logo或Slider吗?这在这里发挥作用,因为它应该是您用于“类型”的文件路径。所以它看起来应该是以下之一:

如果您选择了滑块

<block type="brandlogo/adminhtml_slider" name="brandlogo" template="test.phtml"/>

如果您选择徽标

<block type="brandlogo/adminhtml_logo" name="brandlogo" template="test.phtml"/>

<强> test.phtml

一切都很好。

希望这有帮助!