使用自定义控制器覆盖CsMarketplace帐户控制器

时间:2016-02-25 06:51:34

标签: magento plugins controller override magento-1.9.2.1

阅读&研究了很多我今天问这个问题,很多代码可以覆盖核心magento文件而不是magento插件文件。

我已经在我的网站上安装了CsMarketplace插件供供应商管理。

我想覆盖供应商 - 注册函数来编写我的自定义代码,该代码需要在供应商成功注册后才能工作。

需要覆盖:function createPostAction(); 在文件mypoject / app / code / local / Ced / CsMarketplace / controllers / AccountController.php

文件1:mypoject / app / code / local / Core / Ced / CsMarketplace / controllers / AccountController.php

<?xml version="1.0"?>
<config>
<modules>
    <Core_Ced_CsMarketplace>
        <version>1.0</version>
    </Core_Ced_CsMarketplace>
</modules>
<frontend>
    <routers>
        <CsMarketplace>
            <args>
                <modules>
                    <Core_Ced_CsMarketplace before="Ced_CsMarketplace">Core_Ced_CsMarketplace</Core_Ced_CsMarketplace>
                </modules>
            </args>
        </CsMarketplace>
    </routers>
</frontend>
</config>

文件2:mypoject / app / code / local / Core / Ced / CsMarketplace / etc / config.xml

<?xml version="1.0"?>
<config>
 <modules>
    <Core_Customer>
        <active>true</active>
        <codePool>local</codePool>
    </Core_Customer>
    <Core_Ced_CsMarketplace>
        <active>true</active>
        <codePool>local</codePool>
    </Core_Ced_CsMarketplace>
</modules>
</config>

文件3:mypoject / app / etc / modules / Core_All.xml

{{1}}

1 个答案:

答案 0 :(得分:0)

您的控制器未正确放置在文件系统中。 Magento总是假设控制器位于controllers目录下的某处,它本身就在Namespace + Modulename文件夹中,例如。

app/code/[codepool]/[Namespace]/[Modulename]/controllers/ # I previously missed the codepool, because Magento 2 :-)

您正试图让系统在一个设计无法找到控制器的位置找到控制器。

(根据OP评论编辑)

控制器需要 两个 级别的深度(命名空间+模块名称)。以下内容不起作用:

app/code/local/Namespace/controllers
app/code/local/Namespace/Modulename/SomeOtherFolder/controllers

在您的情况下,您可以选择CustomCed作为命名空间,并提供:

app/code/local/CustomCsd/CsMarketplace/controllers/AccountController.php

在那里,您将覆盖createPostAction()

此外,根据您的操作,您可以使用one of the dynamic events which exist around controller action dispatching