0

我正在尝试扩展核心 AccountController.php -> app/code/core/Mage/Customer 将其复制到 app/code/local/Mage/ 并添加一个日志以查看哪个扩展正确。

In the file AccountController.php (app/code/local/Mage/Customer/controllers)
...
...
public function createPostAction() {
        Mage::log('In app/code/local/Mage/', null, 'test.log', true);
...
...

AND CORE (only test)
In the file AccountController.php (app/code/core/Mage/Customer/controllers)
...
...
public function createPostAction() {
        Mage::log('In app/code/core/Mage/', null, 'test.log', true);
...
...

并且不通过代码/本地/法师而是通过核心。我需要配置一些东西还是失败了?

4

2 回答 2

2

加载控制器类定义的逻辑在自动加载器所依赖的显式包含路径之上构建文件路径。这意味着没有本地与核心优先级。

您需要通过在 xpath 下指定目录来创建控制器重写frontend/routers/customer/args/modules/your_module

后一个节点需要将before属性设置为Mage_Customer,您需要AccountController.php使用createPostAction()方法创建一个。根据您的需要,您可能需要也可能不需要扩展并需要核心帐户控制器类。

于 2013-07-12T09:57:00.427 回答
1

我想您需要原始控制器:

require_once Mage::getModuleDir('controllers', 'Mage_Customer').DS.'AccountController.php';

通常,您需要以 xml 方式重写控制器来执行此操作...我还没有签入代码,但也许这就是问题所在。

我建议通过 config.xml 以常规方式执行此操作

http://www.magentocommerce.com/wiki/5__-_modules_and_development/0__-_module_development_in_magento/how_to_overload_a_controller

于 2013-07-11T15:11:25.850 回答