如何从自己的模块覆盖 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>