覆盖控制器功能Magento 2

时间:2016-08-29 13:26:00

标签: php controller override magento2

我想覆盖Magento 2 CreatePost.php

中的execute Function

档案: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
    }
}

档案: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>

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

1 个答案:

答案 0 :(得分:0)

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

试试这个:

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>