重写magento的model, block 和controller
2012-11-22 11:59
120 查看
Magento的二次开发 , 最重要的一点 ,就是尽量不要修改Magento的核心文件. 一旦修改了magento的核心文件,以后如果要对magento进行升级, 那将是一个恶梦, 同时,也容易造成不同模块间的冲突, 背离magento模块之间低耦合的设计思想。Magento自身也提供了二次开发模式,即对magento的model, block, controller 进行重写首先, 我们要创建一个新的module, 具体方法可以参见这里一个新的module是一个独立的模块, 重写magento核心的模块的关键在于, 配置config.xml文件现在我以重写购物车方法的例子进行讲解新的模块
是 /app/code/local/App/Xcheckout 即(配置config.xml文件 ,重写购物车中Onepage的model, block 和controller,配置如下:<config><modules><Mage_Xcheckout><version>0.0.1</version></Mage_Xcheckout></modules><global><rewrite><Lapss_xcheckout_onepage><from><![CDATA[#^/checkout/onepage/#]]></from><to>/xcheckout/onepage/</to></Lapss_xcheckout_onepage></rewrite><blocks><checkout><rewrite><onepage_payment_methods>Lapss_Xcheckout_Block_Onepage_Payment_Methods</onepage_payment_methods></rewrite></checkout></blocks><models><checkout><rewrite><type_onepage>Lapss_Xcheckout_Model_Type_Onepage</type_onepage></rewrite></checkout></models></global><frontend><routers><Lapss_Xcheckout><use>standard</use><args><module>Lapss_Xcheckout</module><frontName>xcheckout</frontName></args></Lapss_Xcheckout></routers><layout><updates><checkout><file>xcheckout.xml</file></checkout></updates></layout></frontend></config>config.xml详细说明:1.指定需要重写的模块具体<rewrite><Lapss_xcheckout_onepage><from><![CDATA[#^/checkout/onepage/#]]></from><to>/xcheckout/onepage/</to></Lapss_xcheckout_onepage></rewrite>2.针对block的重写<blocks><checkout><rewrite><onepage_payment_methods>Lapss_Xcheckout_Block_Onepage_Payment_Methods</onepage_payment_methods></rewrite></checkout></blocks>3.针对model的重写<models><checkout><rewrite><type_onepage>Lapss_Xcheckout_Model_Type_Onepage</type_onepage></rewrite></checkout></models>4.针对contoller的重写<rewrite><Lapss_xcheckout_onepage><from><![CDATA[#^/checkout/onepage/#]]></from><to>/xcheckout/onepage/</to></Lapss_xcheckout_onepage></rewrite><routers><Lapss_Xcheckout><use>standard</use><args><module>Lapss_Xcheckout</module><frontName>xcheckout</frontName></args></Lapss_Xcheckout></routers>5.新模块的布局文件<layout><updates><checkout><file>xcheckout.xml</file></checkout></updates></layout>注意:你需要把这个模块的所有Controller都重写,这可能会带来很大的麻烦, 为了避免这个问题,config.xml可以采用以下方法:把以下代码/app/code/local/<Namespace>/<Module>/)
<rewrite> <Lapss_xcheckout_onepage> <from><![CDATA[#^/checkout/onepage/#]]></from> <to>/xcheckout/onepage/</to> </Lapss_xcheckout_onepage> </rewrite>替换成<routers><onepage><rewrite><to>App_Onepage/onepage</to><override_actions>true</override_actions><actions><noroute><to>App_Onepage/onepage</to></noroute></actions></rewrite></onepage></routers>
相关文章推荐
- 重写magento的model, block 和controller
- 一步一步重写 CodeIgniter 框架 (5) —— 实现Controller,并加载Model
- magento在自己的模块 覆盖核心代码的block、helper、model
- magento在不同的模块分别覆盖原来的model、block或者helper
- magento直接在controller中创建block and setemplate
- “约定优于配置”与Magento改造尝试四之block、helper和model载入
- 如何重写或者扩展magento内置Block
- 重写某个magento模块的某个controller
- Magento Controller Rewrite - Magento 控制器重写
- 一步一步重写 CodeIgniter 框架 (5) —— 实现Controller,并加载Model
- Magento的block重写规则
- “约定优于配置”与Magento改造尝试四之block、helper和model加载
- magento模块 -重写某个magento模块的某个controller
- magento controller直接渲染Block 以及传参
- 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获
- 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获得的数据传入View中,实现MVC
- 一步一步重写 CodeIgniter 框架 (5) —— 实现Controller,并加载Model
- ngModelController的方法和属性的使用
- NgModelController: $setViewValue,$render,Formatter, Parser
- 强参数 Strong parameters: Dealing with mass assignment in the controller instead of the model