我在覆盖核心 Controller 时遇到问题。我想添加一个新函数,但它只有在我在核心文件(code/core/checkout/controllers/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
您应该小写您的命名空间/模块名称,并且您需要删除 _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/