2012-03-17 84 views
0

我想创建一个管理控制器 - 没有任何菜单项与它关联。Magento - 自定义管理路由器,但没有菜单项

理想情况下,我想让我的控制器通过/index.php/admin/my_controller/访问。

到目前为止,我已经改写了adminhtml控制器如下但是我simnply得到404管理控制台内(即不是主要的404页):

<admin> 
    <routers> 
     <my_module> 
      <use>admin</use> 
      <args> 
       <module>Me_Mymodule</module> 
       <frontName>my_controller</frontName> 
      </args> 
     </my_module> 
     <adminhtml> 
      <args> 
       <modules> 
        <my_module after="Mage_Adminhtml">Me_Mymodule</my_module> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

回答

0

对于你的目标xml config是多余的。 使用以下到您的控制器添加到/管理frontname Company_Module_Adminhtml
现在每个将在控制器/ Adminhtml文件夹中创建控制器将通过管理员访问像

/admin/yourfilename/index 

控制器的类名应该是Module_Module_Adminhtml_YourfilenameController,并且应该延伸Mage_Adminhtml_Controller_Action 这就是诀窍。

+0

需要XML配置才能将目录添加到Mage_Adminhtml的目录列表中。 – benmarks 2012-03-18 12:13:30

+0

是的,我知道。消息解析器正在与我玩技巧.... – Sergey 2012-03-18 19:34:27

0

即使你没有你的控制器添加到菜单,您仍需为控制器添加acl部分adminhtml.xml。此后不要忘记重新登录管理员。

2

从1.4版开始,您当前的配置技术已经过时。相反,它的结构更方便like this

<admin> 
    <routers> 
     <adminhtml> 
      <args> 
       <modules> 
        <my_module before="Mage_Adminhtml">Me_Mymodule_Adminhtml</my_module> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

然后拿到/index.php/admin/mymodule/路径Me/Mymodule/controllers/Adminhtml/MymoduleController.php创建类Me_Mymodule_Adminhtml_MymoduleController extends Mage_Adminhtml_Controller_Action。在您的示例中,您在控制器名称中使用了下划线,请注意,因为它将在搜索正确的类时用作目录分隔符。

请记住为您的控制器生成URL,例如Mage::getUrl('adminhtml/mymodule'),以便它将密钥添加到路径,这在制作管理员控制器时是必需的,否则它将拒绝该页面。

如果没有菜单项,则无法将它们添加到ACL中。在这种情况下,您不需要adminhtml.xml文件。

+0

OP配置是正确的。第一部分是有点无关,但总体来说是正确的... – benmarks 2012-03-18 12:16:02

+0

一个通知。 在=“Mage_Adminhtml”之后更好地使用以避免无意中覆盖magento模块。 – Sergey 2012-03-18 19:37:35

+0

@Sergy这是我的习惯,因为有时你需要重写核心控制器。感谢您指出,OP有选择使用。 – clockworkgeek 2012-03-18 22:25:39