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' .
希望这对某人有所帮助并节省时间,如果对您有帮助请加分:-)
我想覆盖 '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' .
希望这对某人有所帮助并节省时间,如果对您有帮助请加分:-)