Magento:覆盖AccountController干扰寄存器

时间:2015-09-29 11:13:21

标签: php magento

我需要更改editPostAction,因此我创建了自己的AccountController并复制了editPostAction。但突然间客户注册不再有效,我收到很多错误,某些地址字段不能为空(尽管已填写)。我的config.xml如下所示:

<frontend>
    <routers>
        <customer>
            <args>
                <modules>
                    <my_ext before="Mage_Customer_AccountController">My_Ext</my_ext >
                    <!--my_ext before="Mage_Customer_AddressController">My_Ext</my_ext -->
                </modules>
            </args>
        </customer>
    </routers>
</frontend>

AccountController看起来像这样:

require_once Mage::getModuleDir('controllers','Mage_Customer').DS."AccountController.php";
class My_Ext_AccountController extends Mage_Customer_AccountController{

    public function editPostAction(){
        //..copied code from Mage_Customer_AccountController 
    }
}

如果我从config.xml中删除该部分,则客户注册将再次起作用。我不明白为什么会发生这种情况,有没有人遇到过这个问题? editPostAction甚至不应该干扰客户注册,对吧?由于我没有使用其他AccountController方法,我不明白这一点。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这件事发生在我之前,它正在变得尴尬。问题是,另一个现有的扩展(不是我写的,所以有我的借口)已经覆盖了AccountController。他们的扩展修改了注册过程,我的config.xml解除了他们的更改。所以我做的是这个:

<?php
require_once "Otherextension/CustomerRegistration/controllers/AccountController.php";
class My_Ext_AccountController extends Otherextension_CustomerRegistration_AccountController{
    public function editPostAction(){
        //... 
    }
}

因此,我使用了Otherextension AccountController,而不是扩展Mage AccountController,而后者又扩展了Mage AccountController。

也许这有助于其他人。