代码之家  ›  专栏  ›  技术社区  ›  Black

如何从自己的模块覆盖magento控制器操作?

  •  0
  • Black  · 技术社区  · 6 年前

    我试图覆盖函数 indexAction 从“ app\code\core\mage\newsletter\controllers\managecontroller.php “用我自己的。

    我把控制器复制到 app\code\local\fekete\newslette2go\controllers\managecontroller.php 只让功能 指数作用 那里。

    <?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\newslette2go\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/ 然后什么都没有改变,我的覆盖没有被使用。

    我错过了什么?

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Black    6 年前

    我找到了问题的原因。我不得不改变:

    <Fekete_Newsletter2Go before="Mage_Newsletter">
        Fekete_Newsletter2Go
    </Fekete_Newsletter2Go>
    

    对此:

    <Fekete_Newsletter2Go before="Mage_Newsletter">Fekete_Newsletter2Go</Fekete_Newsletter2Go>