扩展magento核心控制器(签出/OnepageController)

扩展magento核心控制器(签出/OnepageController),magento,controller,overriding,extend,Magento,Controller,Overriding,Extend,我在重写核心控制器时遇到问题。我想添加一个新函数,但只有在核心文件(code/core/checkout/controllers/onepagecontroller.php)中添加它时,它才能工作 我关注过一些帖子,但它不起作用。其中包括: www.magentocommerce.com/wiki/5_uu--u模块和_开发/0_uu--u模块_开发_in_magento/how_to_过载_a_控制器 (对不起,我无法添加更多链接) 我不知道发生了什么。。。也许你能帮助我 我使用的是m

我在重写核心控制器时遇到问题。我想添加一个新函数,但只有在核心文件(code/core/checkout/controllers/onepagecontroller.php)中添加它时,它才能工作

我关注过一些帖子,但它不起作用。其中包括:

  • www.magentocommerce.com/wiki/5_uu--u模块和_开发/0_uu--u模块_开发_in_magento/how_to_过载_a_控制器
(对不起,我无法添加更多链接)

我不知道发生了什么。。。也许你能帮助我

我使用的是magento 1.5,我有3个文件:


local->Arias->CoreExtended->etc->config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <version>0.1.0</version>
        </Arias_CoreExtended>
    </modules>

    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended_Checkout</Arias_CoreExtended>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

0.1.0
阿里亚斯•科鲁扩展•科鲁结帐

app->etc->modules->Arias\u CoreExtended.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <active>true</active>
            <codepool>local</codepool>
        </Arias_CoreExtended>
    </modules>
</config>

真的
地方的

本地->阿里亚斯->核心扩展->控制器->签出->OnepageController.php

<?php

require_once 'Mage/Checkout/controllers/OnepageController.php';

class Arias_CoreExtended_Checkout_OnepageController extends Mage_Checkout_OnepageController
{
    public function collectAction()
    {
        echo 'WTF?';
    }

    public function indexAction()
    {
        echo "This controller has been overridden.";
    }
}

我会尽量降低名称空间/模块名称的大小写,如下所示:


Arias\u CoreExtended\u Checkout
我会首先镜像您正在覆盖的控制器的相同目录结构,因此在本例中更改:
local/Arias/CoreExtended/controllers/Checkout/OnepageController.php
local/Arias/CoreExtended/controllers/OnepageController.php

您应该将名称空间/模块名称小写,并且您需要删除
\u Checkout
,因为它通常会覆盖控制器,如果不返回标准,您将查找模块中存在的任何控制器以使用它们。正确的代码是:

<arias_coreextended before="Mage_Checkout">Arias_CoreExtended</arias_coreextended>
Arias\u

我已经成功地使用了这个精确的设置来覆盖Onepage控制器

你的方法基本上是正确的@satumo。你唯一应该改变的就是这条线

<Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended</Arias_CoreExtended>
Arias\u
因此,您的完整配置必须如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <version>0.1.0</version>
        </Arias_CoreExtended>
    </modules>  

    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended</Arias_CoreExtended>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

0.1.0
阿里亚斯

它不起作用。还有什么我可以试试的吗?谢谢你的帮助。