我在覆盖核心控制器时遇到问题。我想添加一个新函数,但只有在核心文件(code / core / checkout / controllers / onepagecontroller.php)中才能使用它。
我已经关注了一些帖子,但它没有用。其中一些是:
(我无法添加更多链接,抱歉)
我不知道发生了什么......也许你可以帮助我;)。
我正在使用magento 1.5,我有这3个文件:
local - >咏叹调 - > 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>
app - &gt;等 - &gt;模块 - &gt; Arias_CoreExtended.xml
<?xml version="1.0"?>
<config>
<modules>
<Arias_CoreExtended>
<active>true</active>
<codepool>local</codepool>
</Arias_CoreExtended>
</modules>
</config>
local - &gt;咏叹调 - &gt; CoreExtended - &gt;控制器 - &gt;结帐 - &gt; 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.";
}
}
提前感谢您的时间,问候。
答案 0 :(得分:1)
我首先会镜像您要覆盖的控制器的相同目录结构,因此在这种情况下更改:local/Arias/CoreExtended/controllers/Checkout/OnepageController.php
到local/Arias/CoreExtended/controllers/OnepageController.php
你应该小写你的命名空间/模块名称,你需要删除_Checkout
,因为它一般会覆盖控制器,并且会查找模块中存在的任何内容,以便在不符合标准的情况下使用它们。正确的代码是:
<arias_coreextended before="Mage_Checkout">Arias_CoreExtended</arias_coreextended>
我已经成功使用了这个确切的设置来覆盖Onepage控制器!
答案 1 :(得分:0)
我会尝试降低你的命名空间/模块名称,如下所示:
<arias_coreextended before="Mage_Checkout">Arias_CoreExtended_Checkout</arias_coreextended>
答案 2 :(得分:0)
你的方法大多是正确的@satumo。你唯一应该改变的就是这一行
<Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended</Arias_CoreExtended>
所以你的完整配置必须如下所示:
<?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>