Magento Oauth Adminhtml 控制器 class 覆盖

Magento Oauth Adminhtml controller class Override

我想覆盖 'Oauth' 模块下的 magento 核心控制器 class。 Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php

模块声明xml:

<?xml version="1.0" encoding="UTF-8"?>

<config>
    <modules>
        <DS_Adminextended>
            <active>true</active>
            <codePool>local</codePool>
        </DS_Adminextended>
    </modules>
</config>

我的 config.xml 是:

<?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> 

我也用过这个但是没用:

<modules>
 <DS_Adminextended before="Mage_Adminhtml">DS_Adminextended_Adminhtml_Oauth</DS_Adminextended>
 </modules>

和扩展 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();
 }
}

但是没有包含扩展文件。 此 'Adminhtml' 存在于 Mage/Oauth 文件夹中,不在 Mage:Adminhtml 中 所以问题是我们如何扩展非管理模块下的管理控制器 class,例如: 1) Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php 要么 2) Mage/Widget/controllers/Adminhtml/Widget/InstanceController.php

我在上面的代码中缺少什么?

您在 require_once 路径中犯了错误,错过了控制器目录。 尝试

require_once 'Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php';

我找到了解决方案:

<admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <DS_Adminextended before="Mage_Oauth">DS_Adminextended_Adminhtml</DS_Adminextended>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

如果您想扩展 Mage::admin 中不存在的管理模块,这是正确的配置文件 魔法就在这里:

<modules><DS_Adminextended before="Mage_Oauth">DS_Adminextended_Adminhtml</DS_Adminextended></modules>

您必须将 "Mage_Oauth" 放在前面而不是 "Mage_Adminhtml",即使它出现在 adminhtml 中也是如此。其次 控制器调用的路径应该是“DS_Adminextended_Adminhtml”,即使您的基本控制器内部还有一个目录,就像我的情况一样,根据核心目录'DS_Adminextended_Adminhtml_Oauth' .

希望这对某人有所帮助并节省时间,如果对您有帮助请加分:-)