西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

如何扩展Magento核心控制器

时间:2016-12-18 04:01来源:未知 作者:好模板 点击:
将演示如何在不弄乱核心文件本身的前提下编辑Magento核心模块。我选择Magento Customer模块下的Account控制器作为本文的示例。你要先找出它在Magento核心文件夹里的路径(完整路径是:ap

将演示如何在不弄乱核心文件本身的前提下编辑Magento核心模块。我选择Magento Customer模块下的Account控制器作为本文的示例。你要先找出它在Magento核心文件夹里的路径(完整路径是:app/code/core/Mage/Customer/controllers/AccountController.php)。

首先创建有类似文件结构的文件:

app/code/local/Alwayly/Coreextended/controllers/Frontend/Customer/AccountController.php。(当然,你可以把Alwayly替换成你想要的命名空间,Coreextended换成其它模块名,但你需要对其它部分做相应的修改)。

接着创建我们模块的xml文件:app/code/local/Alwayly/Coreextended/etc/config.xml。将下面的代码写入对应的文件中:

1.AccountController.php:

< ?php
require_once Mage::getModuleDir('controllers', 'Mage_Customer').DS.'AccountController.php';
//we need to add this one since Magento wont recognize it automatically

class Alwayly_Coreextended_Frontend_Customer_AccountController extends 
{//here, you extended the core controller with our public function indexAction()
{
parent::indexAction();
//you can always use default functionality
}

public function myactionAction()
{
//my code
//you can write your own methods / actions
}

public function mymethod()
{
//my code
//you can write your own methods
}

public function loginAction()
{
//finally you can write your code that will rewrite the whole core method
//and you can call for your own methods, as you have full control over core controller
}
}

2.config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <alwayly_coreextended>
            <version>0.2.0</version>
        </alwayly_coreextended>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <alwayly_coreextended before="Mage_Customer_AccountController">
                               Alwayly_Coreextended_Frontend_Customer
                        </alwayly_coreextended>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>

3.Alwayly_Coreextended.xml:

< ?xml version="1.0"?>
<!--we need to enable this module as any other if-->
<!--you wish to do it as standalone module extension-->
<config>
    <modules>
        <alwayly_coreextended>
            <active>true</active>
            <codepool>local</codepool>
        </alwayly_coreextended>
    </modules>
</config>
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容