Magento的模块与前端和管理功能(Magento Module with Frontend an

2019-09-20 17:22发布

我目前工作的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>

我相信,这两个路由器将尝试呼叫控制器/ IndexController.php,因此相同的功能? 是否有可能设置的东西,所以我的路由器呼吁取决于他们是否是前端还是管理不同的控制器? 这甚至可能还是我需要设置前端模块和管理模块?

我道歉,如果这是一个读书郎的问题,但是这我有点困惑,在现实中我只是想知道最有效的方式来建立与前端和管理功能的自定义模块。

Answer 1:

根据不同的区域(前端或adminhtml),前端或adminhtml路由器分派。
所以,你可以不需要担心得到它搞砸了,只要您使用不同的控制文件前端和adminhtml,从前端扩展控制器Mage_Core_Controller_Front_Action从延伸和adminhtml Mage_Adminhtml_Controller_Action

前端/ 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控制器)

希望这给了你一些信息。
谢谢



Answer 2:

看看我类似的问题: 管理路线自定义模块

我也建议使用

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

这将使您避免使用adminhtml在路线的一部分,所以你的模块后台网址将有简单干净的URL像核心模块例如admin/mymodule



文章来源: Magento Module with Frontend and Admin functionality