我在覆盖核心 Controller 时遇到问题。我想添加一个新功能,但是仅当我在核心文件(代码/核心/结帐/ Controller /onepagecontroller.php)中使用它时,该功能才起作用。
我已经关注了一些帖子,但是没有用。他们之中有一些是:
(抱歉,我无法添加更多链接)
我不知道发生了什么...也许您可以帮助我;)。
我正在使用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.php
到local/Arias/CoreExtended/controllers/OnepageController.php
您应该小写您的 namespace /模块名称,并且需要删除_Checkout
,因为它通常会覆盖 Controller ,并且如果不符合标准,则会查找模块中存在的任何内容以使用它们。正确的代码是:
<arias_coreextended before="Mage_Checkout">Arias_CoreExtended</arias_coreextended>
我已成功使用此精确设置覆盖了Onepage Controller !