Magento -如何扩展前端控制器



我需要对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>

app/代码/地方/我/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>

app/代码/地方/我/Coreextend/控制器/Varien/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...
    }
}

我做错了什么吗?

您不能扩展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

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

Magento不提供覆盖"controller "文件夹下的控制器文件的功能,你只能覆盖"controllers"文件夹下的控制器文件

你只需复制你的文件来加载

应用程序/代码/地方/法师/Core/控制器/Varien/Front.php

相关内容

  • 没有找到相关文章

最新更新