Search code examples
magentoextendfront-controller

Magento - How to extend Front Controller


I am need of making a change to the Magento function _checkBaseUrl found within:

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

As best practice I am trying to extend it with my own module so I am not editing the core code and files but it is not working. If I make the change in the core file i get the desired response but when using this it doesn't work. My module is showing up as Enabled in Configuration > Advanced > Advanced

Files are as below:

etc/modules/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/code/local/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>

app/code/local/Me/Coreextend/Controller/Varien/Front.php

I am including only the _checkBaseUrl function in this file not the whole contents of app/code/core/Mage/Core/Controller/Varien/Front.php - is this correct? (I have tried to include it all as well but that still doesn't work either)

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...
    }
}

Is there anything I am doing wrong?


Solution

  • You cannot extend Magento's Front Controller because isn't a "standard" service controller (notice that is in the Controller folder and not in the controllers one). As you can see in Mage_Core_Model_App class in _initFrontController method called by run method:

    $this->_frontController = new Mage_Core_Controller_Varien_Front();
    

    You can only copy the file in your project's local folder:

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

    and safely edit the file according to your business requirements.