如何从自己的模块覆盖 magento 控制器操作?
How to overwrite magento controller action from own module?
我尝试用我自己的函数覆盖“app\code\core\Mage\Newsletter\controllers\ManageController.php”中的函数 indexAction
。
我将控制器复制到 app\code\local\Fekete\Newsletter2Go\controllers\ManageController。php 并且只让功能 indexAction
在那里。
<?php
require_once 'Mage/Newsletter/controllers/ManageController.php';
class Fekete_Newsletter2Go_ManageController extends Mage_Newsletter_ManageController
{
public function indexAction()
{
exit("test");
}
}
然后我在<config></config>
标签内添加了以下代码:app\code\local\Fekete\Newsletter2Go\etc\config.xml:
<frontend>
<routers>
<newsletter>
<args>
<modules>
<Fekete_Newsletter2Go before="Mage_Newsletter">
Fekete_Newsletter2Go
</Fekete_Newsletter2Go>
</modules>
</args>
</newsletter>
</routers>
</frontend>
但是如果我去 http://example.com/newsletter/manage/ 那么什么都没有改变,我的覆盖没有被使用。
我错过了什么?
我找到了问题的原因。我不得不改变这个:
<Fekete_Newsletter2Go before="Mage_Newsletter">
Fekete_Newsletter2Go
</Fekete_Newsletter2Go>
对此:
<Fekete_Newsletter2Go before="Mage_Newsletter">Fekete_Newsletter2Go</Fekete_Newsletter2Go>
我尝试用我自己的函数覆盖“app\code\core\Mage\Newsletter\controllers\ManageController.php”中的函数 indexAction
。
我将控制器复制到 app\code\local\Fekete\Newsletter2Go\controllers\ManageController。php 并且只让功能 indexAction
在那里。
<?php
require_once 'Mage/Newsletter/controllers/ManageController.php';
class Fekete_Newsletter2Go_ManageController extends Mage_Newsletter_ManageController
{
public function indexAction()
{
exit("test");
}
}
然后我在<config></config>
标签内添加了以下代码:app\code\local\Fekete\Newsletter2Go\etc\config.xml:
<frontend>
<routers>
<newsletter>
<args>
<modules>
<Fekete_Newsletter2Go before="Mage_Newsletter">
Fekete_Newsletter2Go
</Fekete_Newsletter2Go>
</modules>
</args>
</newsletter>
</routers>
</frontend>
但是如果我去 http://example.com/newsletter/manage/ 那么什么都没有改变,我的覆盖没有被使用。
我错过了什么?
我找到了问题的原因。我不得不改变这个:
<Fekete_Newsletter2Go before="Mage_Newsletter">
Fekete_Newsletter2Go
</Fekete_Newsletter2Go>
对此:
<Fekete_Newsletter2Go before="Mage_Newsletter">Fekete_Newsletter2Go</Fekete_Newsletter2Go>