I want to Override magento core controller class which is present under 'Oauth' module.
Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php
Module declaration xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<DS_Adminextended>
<active>true</active>
<codePool>local</codePool>
</DS_Adminextended>
</modules>
</config>
My config.xml is :
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<DS_Adminextended>
<version>1.0.0</version>
</DS_Adminextended>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<DS_Adminextended before="Mage_Adminhtml">DS_Adminextended</DS_Adminextended>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config> i had also use this one but invain:
<modules> <DS_Adminextended before="Mage_Adminhtml">DS_Adminextended_Adminhtml_Oauth</DS_Adminextended> </modules>
and extended AuthorizeController.php :
<?php
require_once("Mage/Oauth/Adminhtml/Oauth/AuthorizeController.php");
die('bla bla bla');
class DS_Adminextended_Adminhtml_Oauth_AuthorizeController extends Mage_Oauth_Adminhtml_Oauth_AuthorizeController {
public function indexAction()
{
echo 'extendedController';exit;
$this->_initForm();
$this->_initLayoutMessages($this->_sessionName);
$this->renderLayout();
}
}
But it did not include the extended file.
This 'Adminhtml' present inside the Mage
auth Folder not in Mage:Adminhtml
So Question is how we can extend admin controller class present under non admin module like:
1) Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php
OR
2) Mage/Widget/controllers/Adminhtml/Widget/InstanceController.php
what i am missing in above code ?
This is not an answer to your question, but did you consider using an observer in stead of overwriting the controller?
Also, you should add a line to your module XML file: <depends><Mage_Oauth /></depends> after <codePool>.
And to actually answer your question, this line is not correct:
<DS_Adminextended before="Mage_Adminhtml">DS_Adminextended</DS_Adminextended>
It should be like this:
<DS_Adminextended before="Mage_Adminhtml">DS_Adminextended_Adminhtml</DS_Adminextended>
Also, take a look here for more info: http://magento.stackexchange.com/questions/10454/override-a-controller-in-adminhtml.
Arjen Miedema thanks for your reply, Actually Ihave to change the complete functionality of Oauth Rest Api. In my case I am removing the on site user authorization step and sending user/password with Tokan varification request. So thats why I am not using event/observer.
I had successfully override the customer path customer can get the products information this is customers module configuration working perfectly.
<frontend>
<routers>
<oauth>
<args>
<modules>
<DS_Coreextended before="Mage_Oauth">DS_Coreextended</DS_Coreextended>
</modules>
</args>
</oauth>
</routers>
</frontend>I use your suggested code:
<DS_Adminextended before="Mage_Adminhtml">DS_Adminextended_Adminhtml</DS_Adminextended>
but having no luck.
still using /var/www/html/magento/app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php this file.
insted /var/www/html/magento/app/code/local/DS/Adminextended/controllers/Adminhtml/Oauth/AuthorizeController.php
I find the solution:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<DS_Adminextended before="Mage_Oauth">DS_Adminextended_Adminhtml</DS_Adminextended>
</modules>
</args>
</adminhtml>
</routers>
</admin>This is the correct config file if you want to extend admin module not present in Mage::admin
magic is here:
<modules><DS_Adminextended before="Mage_Oauth">DS_Adminextended_Adminhtml</DS_Adminextended></modules>
you have to place "Mage_Oauth" in before instead to "Mage_Adminhtml" even if its appearing in adminhtml. secondly
path to controller call should be "DS_Adminextended_Adminhtml" not even if your base contrroller have one more directory inside like in my case 'DS_Adminextended_Adminhtml_Oauth' .