【问题标题】:Magento Oauth Adminhtml controller class OverrideMagento Oauth Adminhtml 控制器类覆盖
【发布时间】:2015-08-03 15:42:35
【问题描述】:

我想覆盖'Oauth'模块下的magento核心控制器类。 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 所以问题是我们如何扩展非管理模块下的管理控制器类,例如: 1) 法师/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php 要么 2) Mage/Widget/controllers/Adminhtml/Widget/InstanceController.php

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

【问题讨论】:

    标签: magento


    【解决方案1】:

    你在 require_once 路径中犯了一个错误,错过了控制器目录。 试试

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

    【讨论】:

    • 我使用的拼写错误:require_once("Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php");问题是:它不包括我的扩展文件,控制不转到扩展文件。我放置了 die('bla bla bla');我没有收到此印刷品。同样,如果控制进入我的文件,即使那样我也会收到包含文件的致命错误,因为你提到了路径错误。我认为 config.xml 有问题但找不到它
    【解决方案2】:

    我找到了解决办法:

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

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

    &lt;modules&gt;&lt;DS_Adminextended before="Mage_Oauth"&gt;DS_Adminextended_Adminhtml&lt;/DS_Adminextended&gt;&lt;/modules&gt;

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 2012-07-06
      • 1970-01-01
      相关资源
      最近更新 更多