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

magento如何重写控制器

时间:2016-01-10 02:40来源: 作者: 点击:
首先建好如下目录先 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\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

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

 

  1. <?xml version="1.0"?>  
  2. <config>  
  3.     <modules>  
  4.         <Edcy_Shopping>  
  5.             <version>0.1.0</version>  
  6.         </Edcy_Shopping>  
  7.     </modules>  
  8.     <global>  
  9.         <rewrite>  
  10.             <Edcy_Shopping_Product>  
  11.                 <from><![CDATA[#^/?catalog/product/#]]></from>  
  12.                 <to>/shopping/product/</to>  
  13.             </Edcy_Shopping_Product>  
  14.         </rewrite>  
  15.     </global>  
  16.     <frontend>  
  17.         <routers>  
  18.             <shopping>  
  19.                 <use>standard</use>  
  20.                 <args>  
  21.                     <module>Edcy_Shopping</module>  
  22.                     <frontName>shopping</frontName>  
  23.                 </args>  
  24.             </shopping>  
  25.         </routers>  
  26.         <layout>  
  27.             <updates>  
  28.                 <shopping>  
  29.                     <file>shopping.xml</file>  
  30.                 </shopping>  
  31.             </updates>  
  32.         </layout>  
  33.     </frontend>  
  34. </config>  
上面from里的正则为什么需要这样写,我们之前也说过,网上教程大都是没有?的,这里我建议大家都加上问号,虽然一般情况下不会出错。
这样我们的配置文件就写好了,开始创建控制器

 

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

 

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

 

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

下面还介绍一种重写方法

config.xml的配置内容如下:

 

  1. <routers>  
  2.     <!--这种写法将覆盖控制器所有的方法-->  
  3.     <catalog>  
  4.         <rewrite>  
  5.             <product>  
  6.                 <to>shopping/product</to>  
  7.                 <override_actions>true</override_actions>  
  8.                 <actions>  
  9.                     <index>  
  10.                         <to>shopping/product/view</to>  
  11.                     </index>  
  12.                 </actions>  
  13.             </product>  
  14.         </rewrite>  
  15.     </catalog>  
  16. </routers>  

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

 

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

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容