簡體   English   中英

具有前端和管理功能的Magento模塊

[英]Magento Module with Frontend and Admin functionality

我目前正在為Magento開發一個自定義模塊。 我理解包,模塊和路由器的基礎知識,並且我已經構建了模塊的前端部分。

但是我現在正在轉向管理方面的事情。 但是我對如何將管理部分添加到路由器並讓它調用相關控制器感到有些困惑。

讓我們想象一下我創建了這些路由器......

<frontend>
    <routers>
        <slider>
            <use>standard</use>
            <args>
                <module>Mypackage_Myodule</module>
                <frontName>Mymodule</frontName>
            </args>
        </slider>
    </routers> 
</frontend> 
<admin>
    <routers>
        <mymoduleadmin>
            <use>admin</use>
            <args>
                <module>Mypackage_Myodule</module>
                <frontName>Mymodule</frontName>
            </args>
        </mymoduleadmin>
    </routers>
</admin>

我認為這兩個路由器都會嘗試調用controllers / IndexController.php,因此具有相同的功能嗎? 是否可以進行設置,以便我的路由器根據它們是前端還是管理員來調用不同的控制器? 這是可能的還是我需要設置前端模塊和管理模塊?

如果這是一個School Boy問題我很抱歉,但這讓我有點困惑,實際上我只想知道設置具有前端和管理功能的自定義模塊的最有效方法。

根據區域(前端或adminhtml),派遣前端或adminhtml路由器。
因此,只要您使用不同的控制器文件用於前端和adminhtml,前端控制器從Mage_Core_Controller_Front_Action和adminhtml擴展,從Mage_Adminhtml_Controller_Action擴展,您就不必擔心它會搞砸。

Frontend / Adminhtml路由器可以定義為(只是一種語法):

<frontend>
    <routers>
        <[module]>
            <use>standard</use>
            <args>
                <module>[Namespace]_[Module]</module>
                <frontName>[module]</frontName>
            </args>
        </[module]>
    </routers>
</frontend>
<admin>
    <routers>
        <[module]>
            <use>admin</use>
            <args>
                <module>[Namespace]_[Module]</module>
                <frontName>[module]</frontName>
            </args>
        </[module]>
    </routers>
</admin>

您可以在以下位置創建前端控制器: app/code/[codePool]/[Namespace]/[Module]/controllers/
例如:

<?php
//file: app/code/local/MagePsycho/Testmodule/controllers/IndexController.php
class MagePsycho_Testmodule_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction(){

    }
}

要從url訪問它: http://your-magento-url/testmodule/index/index
和adminhtml控制器在: app/code/[codePool]/[Namespace]/[Module]/controllers/Adminhtml/
例如:

<?php
//file: app/code/local/MagePsycho/Testmodule/controllers/Adminhtml/IndexController.php
class MagePsycho_Testmodule_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction(){

    }
}


要從url訪問它: http://your-magento-url/testmodule/adminhtml_index/index
(您可以看到用於分隔adminhtml控制器的Adminhtml文件夾)

希望這能給你一些信息。
謝謝

看看我的類似問題: 自定義模塊中的管理路由

我也建議使用

<admin>
 <routers>
   <adminhtml>
     <args>
       <modules>
         <modulename before="Mage_Adminhtml">Namespace_Module_Adminhtml</modulename>
       </modules>
     </args>
   </adminhtml>
 </routers>
</admin>

這將允許您避免在路由中使用adminhtml部分,因此您的模塊后端URL將具有簡單和干凈的URL,如核心模塊,例如admin/mymodule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM