2012-03-17 83 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