Display template in Admin Module of Magento
Here is a complete answer:
Location: app/etc/modules
Digitab_Brandlogo.xml
Looks good.
Location: app/code/local/Digitab/Brandlogo/Block/Adminhtml
This folder needs to contain the below files & folders:
app/code/local/Digitab/Brandlogo/Block/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)); }}
app/code/local/Digitab/Brandlogo/Block/Adminhtml/Brandlogo.php
<?phpclass 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'); }}
Location: app/code/local/Digitab/Brandlogo/Helper/Data.php
<?phpclass Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract {}
Location: app/code/local/Digitab/Brandlogo/controllers/Adminhtml/BrandlogoController.php
<?phpclass Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action { public function indexAction() { $this->loadLayout(); $this->renderLayout(); }}
The main problem is with the way you have written the XML files.
Location: app/code/local/Digitab/Brandlogo/etc
1. app/code/local/Digitab/Brandlogo/etc/config.xml Below is how the code for config.xml
must be.
<?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 Below is how the code for config.xml
must be.
<?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>
Location: 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>
Location: app/design/frontend/adminhtml/default/default/template/test.phtml
Looks fine.
I have checked this code in my local machine. Find the screenshot here:
Let me know if this works for you.
Note :: FOLLOW THE EXACT NAMING CONVENTION AND FOLDER NAMES AND THE CODE AS MENTIONED HERE in my Answer
Happy Coding...
Quite a few things wrong here, I'll go through each file step by step.
Digitab_Brandlogo.xml
All good here.
logo.php
The only thing wrong here is that your filename is different from your classname (logo != slider). Simply change the filename to the classname or vice versa and you should be good on this file. Also, make the first letter of your class and filename uppercase.
IndexController.php
Same thing here as logo.php, you've named the file differently from the class, however this one you'd want to change the filename to the class name as you've used it in a lot of your other files. The filename should be BrandlogoController.php
config.xml
Because you have a block defined, you want to define your blocks under global.
Replace
<blocks />
with this:
<blocks> <digitab_brandlogo> <class>Digitab_Brandlogo_Block</class> </digitab_brandlogo></blocks>
Then, under your router, you want to make sure Brandlogo is capitalized like so:
<digitab_brandlogo> <use>admin</use> <args> <module>Digitab_Brandlogo</module> <frontName>brandlogo</frontName> </args></digitab_brandlogo>
adminhtml.xml
Your action is what you want to hit in your controller. The setup for this (on admin controllers) is adminhtml/module_controller_action (if you leave action off it defaults to index), so in this case you want it to be this:
<action>adminhtml/brandlogo_brandlogo</action>
Data.php
All good here.
brandlogo.xml
Your tag needs to have the format adminhtml_module_controller_action so let's change it to the following:
<adminhtml_brandlogo_brandlogo_index>
Then on this line:
<block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
You are trying to use an imaginary block type. Remember earlier where we named our block either Logo or Slider? This comes into play here, as that should be the file path you use for "type". So it should look like one of the following:
If you chose Slider
<block type="brandlogo/adminhtml_slider" name="brandlogo" template="test.phtml"/>
If you chose Logo
<block type="brandlogo/adminhtml_logo" name="brandlogo" template="test.phtml"/>
test.phtml
All good here.
Hope this helps!