覆盖Magento客户控制器以进行自定义表单操作

时间:2014-03-06 10:46:30

标签: forms magento override controllers magento-1.8

我为我的主页创建了一个新模板,只有注册和登录表单。到目前为止,这两种形式的行为都是我这样称呼的默认行为:
注册表格echo Mage::helper('customer')->getRegisterPostUrl()echo Mage::helper('customer')->getLoginPostUrl()用于登录表单。

我现在正试图覆盖Customer控制器以更改这些表单的操作。到目前为止,我有: 一个。创建了一个新模块并编辑了app/code/local/MyCo/Homepage/etc/config.xml文件,如下所示:

<?xml version="1.0"?>
<config>
  <modules>
    <MyCo_Homepage>
      <version>0.1.0</version>
    </MyCo_Homepage>
  </modules>
  <frontend>
    <routers>
      <args>
        <modules>
          <myco_homepage before="Mage_Customer_AccountController">MyCo_Homepage</myco_homepage>
        </modules>
      </args>
    </routers>
  </frontend>
</config>

湾在文件app/code/local/MyCo/Homepage/controllers/IndexController.php中创建了一个控制器,并将其从Mage_Customer_AccountController扩展为:

require_once 'Mage/Customer/controllers/AccountController.php';
class Bemaad_Homepage_IndexController extends Mage_Customer_AccountController
{
  public function loginPostAction()
  {
  }

  public function createPostAction()
  {
  }
}

我的问题是:我不知道该怎么放在表单的动作属性中,Magento似乎没有注册我的新控制器。

有谁知道我犯了什么错误,或者我忘记了什么?

谢谢!

1 个答案:

答案 0 :(得分:-1)

您的配置应如下

<?xml version="1.0"?>
<config>
  <modules>
    <MyCo_Homepage>
      <version>0.1.0</version>
    </MyCo_Homepage>
  </modules>
  <frontend>
    <routers>
      <customer>
        <modules>
          <myco_homepage before="Mage_Customer">MyCo_Homepage</myco_homepage>
        </modules>
      </customer>
    </routers>
  </frontend>
</config>

此外,您的重载控制器类必须具有与重载控制器类相同的控制器名称。

所以不应该 Bemaad_Homepage_IndexController 它应该是 Bemaad_Homepage_AccountController

请参阅此处以供参考:http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller