I'm following this tuto http://www.magentogarden.com/blog/how-does-magento-adminhtml-grid-work.html to create an admin module.
After trying lots of solutions, i still can't reach my admin controller. I get a 404.
/var/www/app/code/local/Namespace/Configslider/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Namespace_Configslider>
<version>0.1.0</version>
</Namespace_Configslider>
</modules>
<global>
<helpers>
<configslider>
<class>Namespace_Configslider_Helper</class>
</configslider>
</helpers>
<blocks>
<configslider>
<class>Namespace_Configslider_Adminhtml_Block</class>
</configslider>
</blocks>
</global>
<admin>
<routers>
<configslider>
<args>
<modules>
<Namespace_Configslider after="Mage_Adminhtml">Namespace_Configslider_Adminhtml</Namespace_Configslider>
</modules>
</args>
</configslider>
</routers>
</admin>
</config>
/var/www/app/code/local/Namespace/Configslider/etc/adminhtml.xml
<?xml version="1.0"?>
<config>
<menu>
<cms>
<children>
<namesptest module="configslider">
<title>Configure the slider</title>
<sort_order>50</sort_order>
<action>adminhtml/configslider/index</action>
</namesptest>
</children>
</cms>
</menu>
<layout>
<updates>
<configslider>
<file>configslider.xml</file>
</configslider>
</updates>
</layout>
<acl>
<resources>
<admin>
<children>
<cms>
<children>
<namesptest translate="title" module="configslider">
<title>NameSpace - Slider</title>
<sort_order>100</sort_order>
</namesptest>
</children>
</cms>
</children>
</admin>
</resources>
</acl>
</config>
The admin generated menu link URI is : index.php/admin/configslider/index/
EDIT : From the alan storm tuto, magento generate the following controller file name : /var/www/app/code/core/Mage/Index/controllers/Adminhtml/ConfigsliderController.php
and magento can't find the controller class name.
EDIT 2 :
/var/www/app/design/adminhtml/default/default/layout/configslider.xml
<?xml version="1.0"?>
<layout>
<configslider_adminhtml_index_index>
<reference name="content">
<block type="configslider/adminhtml_configslider" name="configslider"></block>
</reference>
</configslider_adminhtml_index_index>
</layout>
EDIT 3 :
NameSpace/Configslider/Block/Adminhtml/Configslider/Init.php
<?php
class NameSpace_Configslider_Block_Adminhtml_Configslider_Init extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_blockGroup = 'configslider';
$this->_controller = 'adminhtml_configslider';
$this->_headerText = Mage::helper('configslider')->__('Configure slider');
parent::__construct();
}
}
NameSpace/Configslider/Block/Adminhtml/Configslider/Grid.php
<?php
class NameSpace_Configslider_Block_Adminhtml_Configslider_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('configslider_id');
$this->setDefaultSort('id');
$this->setDefaultDir('asc');
}
...
EDIT 4 : Below my module tree :
Configslider/
Block/
Adminhtml/
Configslider/
Grid.php
Init.php
controllers/
Adminhtml/
IndexController.php
Model/
Config.php
Resource/
Config.php
Setup.php
Config/
Collection.php
Helper/
Data.php
sql/
configslider_setup/
mysql4-install-0.1.0.php
Do you know where i'm wrong ?
Best Answer
This should be adminhtml below routers and not configsliders in your config.xml.
Also, I'd recommend this guide.
http://alanstorm.com/magento_admin_hello_world_revisited
Updated answer based on new info.
Without re-creating the entire module, this is what I changed to get the admin page to show up and not 404. I substituted the namespace for my testing so you will need to change that. You should be able to take it from here.
Pay close attention to the order of the namespace_extensionname in the config edits, these are important.
Modified: app/etc/local/Stackexchange/Configslider/etc/config.xml
Modified: app/etc/local/Stackexchange/Configslider/etc/adminhtml.xml
Missing: app/etc/local/Stackexchange/Configslider/controllers/Adminhtml/ConfigsliderController.php