Magento - 如何扩展前端控制器

时间:2015-09-04 09:59:07

标签: magento extend front-controller

我需要对以下内容中的Magento函数_checkBaseUrl进行更改:

app/code/core/Mage/Core/Controller/Varien/Front.php

作为最佳实践,我试图用我自己的模块扩展它,所以我不编辑核心代码和文件,但它不起作用。如果我在核心文件中进行更改,我会得到所需的响应,但在使用它时它不起作用。我的模块在Configuration > Advanced > Advanced

中显示为已启用

文件如下:

等/模块/ Me_Coreextend.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Me_Coreextend>
            <active>true</active>
            <codePool>local</codePool>
        </Me_Coreextend>
    </modules>
</config>

应用/代码/本地/ ME / Coreextend的/ etc / config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <Me_Coreextend>
            <version>1.0</version>
        </Me_Coreextend>
  </modules>
    <frontend>
        <routers>
            <core>
                <args>
                    <modules>
                         <Me_Coreextend before="Mage_Core">Me_Coreextend</Me_Coreextend>
                    </modules>
                </args>
            </core>
        </routers>
    </frontend>
</config>

应用/代码/本地/ ME / Coreextend /控制器/瓦瑞恩/ Front.php

我只在此文件中包含_checkBaseUrl函数而不是app/code/core/Mage/Core/Controller/Varien/Front.php的全部内容 - 这是正确的吗? (我试图将它全部包括在内但仍然无法正常工作)

include_once('Mage/Core/Controller/Varien/Front.php');
class Me_Coreextend_Controller_Varien_Front extends Mage_Core_Controller_Varien_Front
{
    protected function _checkBaseUrl($request)
    {
        // custom changes...
    }
}

我有什么问题吗?

2 个答案:

答案 0 :(得分:2)

您无法扩展Magento的Front Controller,因为它不是“标准”服务控制器(通知位于Controller文件夹而不是controllers文件夹中)。您可以在Mage_Core_Model_App类中通过_initFrontController方法调用run方法中看到:

$this->_frontController = new Mage_Core_Controller_Varien_Front();

您只能复制项目本地文件夹中的文件:

app/code/local/Mage/Core/Controller/Varien/Front.php

并根据您的业务需求安全地编辑文件。

答案 1 :(得分:0)

Magento不提供覆盖“Controller”文件夹中控制器文件的功能,只能覆盖“controllers”文件夹中的控制器文件

只需将文件复制到加载

即可

应用/代码/本地/法师/核心/控制器/瓦瑞恩/ Front.php