magento - 扩展 magento 核心 Controller (Checkout/OnepageController)

标签 magento controller overriding extend

我在覆盖核心 Controller 时遇到问题。我想添加一个新函数,但它只有在我在核心文件(code/core/checkout/controllers/onepagecontroller.php)中执行时才有效。

我关注了一些帖子,但它不起作用。他们之中有一些是:

  • http://www.magentocommerce.com/boards/viewthread/32979/P0/
  • http://www.webspeaks.in/2011/03/override-controllers-in-magento.html
  • www.magentocommerce.com/wiki/5__-_modules_and_development/0__-_module_development_in_magento/how_to_overload_a_controller

  • (我无法添加更多链接,抱歉)

    我不知道发生了什么......也许你可以帮助我;)。

    我正在使用 magento 1.5,我有这 3 个文件:

    本地 -> Arias -> CoreExtended -> 等 -> 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>
    

    应用程序 -> 等 -> 模块 -> Arias_CoreExtended.xml
    <?xml version="1.0"?>
    <config>
        <modules>
            <Arias_CoreExtended>
                <active>true</active>
                <codepool>local</codepool>
            </Arias_CoreExtended>
        </modules>
    </config>
    

    本地 -> Arias -> CoreExtended -> Controller -> Checkout -> 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.";
        }
    }
    

    提前感谢您的时间,问候。

    最佳答案

    我将首先镜像您正在覆盖的 Controller 的相同目录结构,因此在这种情况下更改:local/Arias/CoreExtended/controllers/Checkout/OnepageController.phplocal/Arias/CoreExtended/controllers/OnepageController.php
    您应该小写您的命名空间/模块名称,并且您需要删除 _Checkout因为它通常会覆盖 Controller ,并且如果不回退到标准,它将查找模块中存在的任何 Controller 以使用它们。正确的代码是:

    <arias_coreextended before="Mage_Checkout">Arias_CoreExtended</arias_coreextended>
    

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

    关于magento - 扩展 magento 核心 Controller (Checkout/OnepageController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918499/

    相关文章:

    magento - CentOs Magento 文件创建为目录?

    python - 使用 python 的桌面 GUI 中的 MVC 模式

    controller - 导轨 5 : Local variables in form partial

    ruby - 如何在 Rails 中将逻辑从 View 移入 Controller

    git - 如何在不使用分支的情况下在同一基目录中创建两个 Git 存储库?

    Git忽略除子文件夹以外的所有内容

    .htaccess - Magento 1.9 - 重定向太多

    android - 覆盖的音量按钮影响了后退按钮?

    .net - 当用户单击 X(关闭程序)时,VB.NET 重载默认功能

    android - IMarketBillingService 覆盖生成错误