magento如何重写控制器

首先建好如下目录先

app\code\local\Edcy\Shopping\Block

app\code\local\Edcy\Shopping\controllers

app\code\local\Edcy\Shopping\etc

app\code\local\Edcy\Shopping\Helper

app\code\local\Edcy\Shopping\Model

app\code\local\Edcy\Shopping\sql

这些都是常用到的目录,其中有些目录没有用到的,没有也没有关系。

新建如下文件,开启你的模块:

app\etc\modules\Edcy_Shopping.xml

内容如下:

<?xml version="1.0"?>
<config>
    <modules>
        <Edcy_Shopping>
            <active>true</active>
            <codePool>local</codePool>
        </Edcy_Shopping>
    </modules>
</config>

编写你的congfig配置文件:

app\code\local\Edcy\Shopping\etc\config.xml

文件里包含前端、后台、全局、模块版本这些东西。

<?xml version="1.0"?>
<config>
    <modules>
        <Edcy_Shopping>
            <version>0.1.0</version>
        </Edcy_Shopping>
    </modules>
    <global>
        <rewrite>
            <Edcy_Shopping_Product>
                <from><![CDATA[#^/?catalog/product/#]]></from>
                <to>/shopping/product/</to>
            </Edcy_Shopping_Product>
        </rewrite>
    </global>
    <frontend>
        <routers>
            <shopping>
                <use>standard</use>
                <args>
                    <module>Edcy_Shopping</module>
                    <frontName>shopping</frontName>
                </args>
            </shopping>
        </routers>
        <layout>
            <updates>
                <shopping>
                    <file>shopping.xml</file>
                </shopping>
            </updates>
        </layout>
    </frontend>
</config>
上面from里的正则为什么需要这样写,我们之前也说过,网上教程大都是没有?的,这里我建议大家都加上问号,虽然一般情况下不会出错。
这样我们的配置文件就写好了,开始创建控制器

app\code\local\Edcy\Shopping\controllers\ProductController.php

require_once Mage::getModuleDir('controllers', 'Mage_Catalog') . DS . 'ProductController.php';
class Edcy_Shopping_ProductController extends Mage_Catalog_ProductController {
    public function viewAction(){
//        header("Content-Type: text/xml");
//        die(Mage::app()->getConfig()->getNode()->asXML());
//        exit;
        echo '覆盖过的....';
        parent::viewAction();
    }
    
}
上面呢,引入重写的控制器,我们可以直接用动态的路径,可以避免一些不必要的错误。

这样我们访问产品详细页就能看到我们输出的东西了。

下面还介绍一种重写方法

config.xml的配置内容如下:

        <routers>
            <!--这种写法将覆盖控制器所有的方法-->
            <catalog>
                <rewrite>
                    <product>
                        <to>shopping/product</to>
                        <override_actions>true</override_actions>
                        <actions>
                            <index>
                                <to>shopping/product/view</to>
                            </index>
                        </actions>
                    </product>
                </rewrite>
            </catalog>
        </routers>

上面这段代码加到global节点下即可。

如果你的配置是这样写的话,那么你的 控制器里所有的方法都必须重写。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值