【问题标题】:Can't seem to override Checkout Controller in Magento似乎无法覆盖 Magento 中的结帐控制器
【发布时间】:2011-08-18 15:31:38
【问题描述】:

我正在尝试对我的 Magento 商店中的 Checkout 控制器进行一些更改,但是,当我尝试将控制器文件放入我的本地目录时,它似乎不尊重本地文件。

我已经检查了文件在各自代码池中的相同位置,并且文件被命名为相同的东西,它就是不会这样做。

  • /app/code/core/Mage/Checkout/controllers|CartController.php
  • /app/code/local/Mage/Checkout/controllers|CartController.php

这些是我拥有的两个文件的文件路径。

Magento 中的结帐文件有什么特别之处可以防止它们被覆盖吗?

【问题讨论】:

    标签: magento


    【解决方案1】:

    仅供参考,仅通过将相关文件放在具有相同文件夹结构的本地文件夹中,控制器覆盖不起作用。相反,您需要遵循以下语法:

    <config>
        <frontend> [1]
            <routers>
                <checkout> [2]
                    <args>
                        <modules>
                            <yourModule before="Mage_Checkout">Namespace_Module_Overwrite_Checkout</yourModule> [3]
                        </modules>
                    </args>
                </checkout>
            </routers>
        </frontend>
    </config>
    
    [1] 取决于控制器区域“前端”或“管理员” [2] 要覆盖的模块的路由器节点(在该模块的 config.xml 中查找) [3] 标签可以是任何东西,它在节点内必须是唯一的。 Your_Module_Overwrite_Checkout(映射到目录) 你的/模块/控制器/覆盖/结帐/ 希望这可以帮助。 问候 魔法师心理

    【讨论】:

    • 这对 Magento 团队来说是一个奇怪的设计决定,因为模块内的所有其他内容都可以通过将其放在本地代码池中的正确位置轻松覆盖。
    【解决方案2】:

    阅读 lichal 的 Magento Wiki 以获得有效且完整的解决方案: https://wiki.magento.com/display/m1wiki/How+To+Overload+a+Controller

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多