重写某个magento模块的某个controller

转载 2011年01月14日 15:39:00

 

重写某个magento 模块的某个controller

当你需要对magento 的某个功能进行修改时,创建新的模块重写现有模块的某个controller 是必然的,因为你只是想修改其中的某个方法,而不需要动其它的controller ,其它的类。

 

 

 

以重写checkout 模块的 OnepageController.php 为例子:

 

 

 

step one: 创建新并注册新的模块

 

这个应该不用多说了,可以直接复制一个现有模块的文件目录结构,也可以只创建你需要修改的文件,当然要保持其目录结构层次。而且要包含必须的文件:每个模块的必须文件是config.xml ,然后则是你要修改的那个文件。

 

模块文件:

 

Magento/app/code/local/Company/Xcheckout/etc/config.xml

Magento/app/code/local/Company/Xcheckout/controllers/OnepageController.php

注:我想理论上讲我们也可以在新的Company 包(package )中使用checkout 作为模块名,但是我在实现过程中就因为这个出现问题,而且尽管我尝试跟踪代码想找出原因,却发现好像magento 本身就是那么处理的,如果我判断没错的话,也许是一个不算bugbug 吧。

 

magento 注册新模块文件:

 

Magento/app/etc/modules/Company_All.xml

 

<config>

<modules>

<Company_Xcheckout>

<active>true</active>

<codePool>core</codePool>

<depends>

<Mage_Checkout />

</depends>

</Company_Xcheckout>

</modules>

</config>

 

注:虽然说没指定depends 也是可以的,不过我觉得显然我们的模块是要在原有的checkout 模块基础上建立的,所以事实上是有依赖的,增加这个是比较合理的。

 

 

 

step2: 编辑新建模块的config.xml 文件,配置你要重写的controller

 

<?xml version="1.0" encoding="UTF-8"?>

<config>

<modules>

<Company_Xcheckout>

<version>0.1.0</version>

</Company_Xcheckout>

</modules>

<global>

<rewrite>

// 原本以为这个名称有分大小写,而事实上是没有的。由于magento 没有一个参考的文档,我们只能通过代码来验证。但是我在跟踪发现了这个并不现在magento 论坛上他们所讲的那样是有分大小写的,当然,它必须是唯一的。

<Company_xcheckout_onepage>

<from><![CDATA[#^/checkout/onepage/#]]></from>

<to>/xcheckout/onepage/</to>

</Company_xcheckout_onepage>

</rewrite>

 

// 重写magento block

<blocks>

<checkout>

<rewrite>

<onepage>Company_Xcheckout_Block_Onepage</onepage>

<onepage_billing>Company_Checkout_Block_Onepage_Billing</onepage_billing>

</rewrite>

</checkout>

</blocks>

</global>

 

// 如果你发现你的controlller 没有被调用,基本上是router 设置不合理。

<frontend>

<routers>

<Company_Xcheckout>

<use>standard</use>

<args>

<module>Company_Xcheckout</module>

<frontName>xcheckout</frontName>

</args>

</Company_Xcheckout>

</routers>

 

// 如果你在实施的时候出现空白页之类的问题,基本上是由于layout 引起的

<layout>

<updates>

<checkout>

<file>xcheckout.xml</file>

</checkout>

</updates>

</layout>

</frontend>

</config>

 

 

 

step 3: 重写相关的代码

 

1 、重写controller

 

require_once "Mage/Checkout/controllers/OnepageController.php";

 

class Company_Xcheckout_OnepageController extends Mage_Checkout_OnepageController

{

//do what you want

 

// 尽情发挥吧

 

}

 

2 、重写block

 

require_once 'Mage/core/Checkout/Block/Onepage.php';

 

class Company_Xcheckout_Block_Onepage extends Mage_Checkout_Block_Onepage_Abstract

{

 

}

 

注:其实在实现和跟踪代码的过程中还发现了很多问题和学到了magento 的一些在文档上没有东西。只能等有时间一点点整理了。

相关文章推荐

重写magento的model, block 和controller

Magento的二次开发 , 最重要的一点 ,就是尽量不要修改Magento的核心文件.   一旦修改了magento的核心文件,以后如果要对magento进行升级, 那将是一个恶梦, 同时,也容易造...
  • clh604
  • clh604
  • 2012-11-22 11:59
  • 3258

Magento module: Create your own controller

Magento is based on MVC model. This model helps for defining models, view (layout + templates) a...

magento - 改写tag/product controller

magento的最新版本已经是1.6了.当然相对于1.5来说在性能上没有太多的改进,不过修正了不少BUG.同时也添加了不少新的模块,如果担心性能,没用的模块可以关闭掉.归入正题. 近日,发现goog...

How to extend Magento core controller?

Just as with models/blocks/helpers, there are times when we want to change the way a core Magento co...

magento系统设计模块

  • 2016-03-09 14:08
  • 68KB
  • 下载

Magento模块开发教程

  • 2013-03-21 17:35
  • 662KB
  • 下载

MAGENTO 后台模块开发实例

在这一章节,我们来梳理一下之前几章的内容,更加完整性的走一遍,下面所列出步骤中的代码可以在这里下载,解压后直接复制进项目即可看出效果 下载: Magento-Backend-Module-Ful...

如何创建magento模块

  • 2017-02-14 14:55
  • 81KB
  • 下载

Magento新闻模块开发教程

  • 2014-03-11 10:29
  • 210KB
  • 下载

MAGENTO 后台模块开发二

在这一章节,我们将会看到关于 Grid 更为复杂一点的操作,接下去所讲的都是前一章节的延续 修改 Grid 表中行的 URL 如果你想要详细定义 Grid 表中行的 URL, 比如,当用户...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)