阅读&研究了很多我今天问这个问题,很多代码可以覆盖核心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}}
答案 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。