资讯专栏INFORMATION COLUMN

Magento如何重写控制器?

tracy / 965人阅读

摘要:重写控制器重写前端控制器对于以重写的为例。首先,对控制器的复写,需要分清是对还是的复写

Magento重写控制器 重写--前端控制器

对于以重写 Mage_Checkout_CartController的indexAction()为例。
找到Mage/Checkout/CartController.php代码中的indexAction:

public function indexAction()
{
    echo "123";
    exit();
    $cart = $this->_getCart();
    if ($cart->getQuote()->getItemsCount()) {
        $cart->init();
        $cart->save();

        if (!$this->_getQuote()->validateMinimumAmount()) {
            $minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())
                ->toCurrency(Mage::getStoreConfig("sales/minimum_order/amount"));

            $warning = Mage::getStoreConfig("sales/minimum_order/description")
                ? Mage::getStoreConfig("sales/minimum_order/description")
                : Mage::helper("checkout")->__("Minimum order amount is %s", $minimumAmount);

            $cart->getCheckoutSession()->addNotice($warning);
        }
    }

到前台访问xxxxx/checkout/cart/index:可以看到如图所示:

那么要想重写这个控制器中的index方法,怎么办呢?
先找到Mage/Checkout模块中的etc/config.xml配置文件,找到如下代码:


......
        
            
                standard
                
                    Mage_Checkout
                    checkout
                
            
        
......
    

接下来,就依次新建模块的目录结构:

App
|---Count
|   |---controllers
|   |    |---CartController.php
|   |---etc
|        |---config.xml

再新建etc/modules/App_Count.xml,加载新建的模块,



    
        
            true
            local
        
    

就下来,我们就要配置config.xml文件来完成对Mage/Checkout/CartController.php的重写:



    
        
            0.1.0
              
    
    
        
            
                standard
                
                    App_Count
                    count
                
            
            
            
                
                    
                        App_Count
                        
                    
                
            
        
      

然后按照Mage/Checkout的文件目录新建App/Count/controllers/CartController.php:

require_once "Mage/Checkout/controllers/CartController.php";//这里需要注意,需要引入重写控制器的详细路径,不能省略
class App_Count_CartController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        echo "The controller has been rewritten";
    }

}

我们来重写刷新页面,看看有无变化:

到此,前台控制器就已经重写成功了。

重写--后端控制器

重写后端控制器与重写前端控制器不同的是config.xml中的配置不一样,例如:



    
        
            0.1.0
        
    
    
        
            
                
                    
                        App_Count
                    
                
            
        
    
    
        
            
                
                    
                        App_Count_Adminhtml
                    
                    
                
            
        
    

对Magento的控制器进行复写,在对magento进行二次开发过程中,必须要掌握的技能,上一次记录了如何对magento中的block进行复写,这次记录下如何对magento中模块的控制器进行复写。
首先,对控制器的复写,需要分清是对Frontend Controller还是Backend Controller的复写;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21443.html

相关文章

  • [译]Magento2 高级路由

    摘要:以上是的的目录路由器配置。考虑重写模块以上文件文件使用的操作字符串。例如,如果你想回到第一个模块在这个系列和添加前端端点,所有你需要做的就是添加以下配置和以下控制器文件。默认操作字符串段我们从先进的路由移动之前,有一些最后要提。 今天,我们要介绍的几个Magento的路由系统的高级功能,并讨论一些看似急性锐边的历史。虽然所有在这篇文章中提供的技术可能不是最好的方式来实现自己的目标,作为...

    PumpkinDylan 评论0 收藏0
  • Magento如何重写block?

    摘要:现在我打算修改的是这个文件,所以我需要在下也新建一个模块叫。接下来创建块目录,并复制到新目录中。接着创建配置文件修改的类名为,并继承原类名。 功能介绍:Magento中如何重写block?记录下如何对magento的block进行重写:首先看下当前模块中的block返回的是什么, //路径:Message/Count/Block/Count.php 前台输出的结果为:showImg...

    Barry_Ng 评论0 收藏0
  • Magento2.x 如何创建一个Module?

    摘要:今天记录下如何创建一个,直接进入正题。创建好我们的和之后,接下来就需要创建一系列的文件,我们依次来说每个文件如何创建。 Magento2.x版本已经发布一段时间了,到现在为止已经到2.2了,最新版本可以关注Magento在github上的更新。今天记录下Magento2.1如何创建一个module,直接进入正题。 安装Magento2后,进入项目的根目录后,进入/app目录,只有app...

    bbbbbb 评论0 收藏0
  • Magento复写插件AW_Blog练习

    摘要:到此就完成了。 功能介绍:安装好Magento插件后,需要把AW_Blog的前端显示方式要改变,变成类似选项卡的展示效果,先看下设计大体效果如下图:showImg(https://segmentfault.com/img/bVtIVr);那么,改如何修改插件呢?还是和往常一样,新建一个模块,包含Block、controllers、etc、sql、Model文件夹showImg(http...

    ad6623 评论0 收藏0
  • Magento1如何打开调试模式,来显示前台路径提示信息?

    摘要:的版本中如何开启调试模式呢在前面,写了一篇有关如何开启调试模式来显示前台的路径信息,便于在学习的时候,能快速的找到各个对应的文件。但是,现在这个项目用的,在的版本中如何开启调试模式呢两种方法供参考方法一通过后台控制台来操作,选择也选择。 magento1.x的版本中如何开启调试模式呢? 在前面,写了一篇有关Magento2.0如何开启调试模式来显示前台的路径信息,便于在学习magent...

    hlcfan 评论0 收藏0

发表评论

0条评论

tracy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<