覆盖控制器功能Magento 2


Override Controller Function Magento 2

我想重写Magento 2的execute函数CreatePost.php

文件:Magento/Controller/Account/CreatePost.php

MyFile: Company/Module/Controller/Account/CreatePost.php

文件:

namespace Company'Module'Controller'Account;
class CreatePost extends 'Magento'Customer'Controller'Account'CreatePost
{
    public function execute()
    {
          // Override standard class code
    }
}

File: di.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="Magento'Customer'Controller'Account'CreatePost" type="Company'Module'Controller'Account'CreatePost" />
</config>

当我尝试注册一个新客户时,我只是得到一个没有错误或其他东西的白页

空白页是正常行为,因为您没有添加任何功能到execution()。

试试这个:

namespace Company'Module'Controller'Account;
class CreatePost extends     'Magento'Customer'Controller'Account'CreatePost
{
    public function execute()
    {
          // your code
          parent::execute();
    }
}

此外,我建议在module.xml

中添加对Magento_Customer模块的依赖。
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Company_Module" setup_version="1.0.0">
    <sequence>
        <module name="Magento_Customer"/>
    </sequence>
</module>