컨트롤러 AccountController를 대체하는 방법


12

메소드 컨트롤러를 재정의해야합니다.

Core/Mage/Customer/controllers/AccountController.php 

새로운 방법을 추가하십시오. 편집 할이 컨트롤러가 잘못되었으므로 재정의해야합니다.

프로젝트 요구 사항 재정의에 따르면 컨트롤러는

local/New/Mage/Customer/controllers/AccountController.php 

이렇게하려면 파일 설정을 만들지 만, 주소 customer/account/test, customer/account /ajax응답하지 않았고, customer/account/login그것은 무시되지 않습니다. 이 구현에 도움을주십시오.

app / app / etc / modules / New_Mage_Customer.xml

<?xml version="1.0"?>
<config>
 <modules>
      <New_Mage_Customer>
           <active>true</active>
           <codePool>local</codePool>
      </New_Mage_Customer>
  </modules>
</config>

app / code / local / New / Mage / Customer / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <New_Mage_Customer>
            <version>0.0.1</version>
        </New_Mage_Customer>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <new_customer before="Mage_Customer">New_Mage_Customer</new_customer>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>

app / code / local / New / Mage / Customer / controllers / AccountController.php

<?php

/**
 * Customer account controller
 */
require_once 'Mage/Customer/controllers/AccountController.php';

class New_Mage_Customer_AccountController extends Mage_Customer_AccountController {

    public function ajaxAction() {
        echo 'ajax!!';
    }

    public function testAction() {
        echo 'test222';
    }

    public function loginAction() {
        echo 'index';
    }

}

감사!


답변:


22

파일 이름은 app / etc / modules / New_Mage.xml입니다.

<?xml version="1.0"?>
<config>
 <modules>
      <New_Mage>
           <active>true</active>
           <codePool>local</codePool>
      </New_Mage>
  </modules>
</config>

에서 응용 프로그램 / 코드 / 지역 / 새 / 마법사 / 등 / config.xml에

<?xml version="1.0"?>
<config>
    <modules>
        <New_Mage>
            <version>0.0.1</version>
        </New_Mage>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <New_Mage before="Mage_Customer">New_Mage</New_Mage>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>

컨트롤러는 app / code / local / New / Mage / controllers / AccountController.php입니다.

/**
 * Customer account controller
 */
require_once Mage::getModuleDir('controllers', 'Mage_Customer') . DS . 'AccountController.php';

class New_Mage_AccountController extends Mage_Customer_AccountController {

    public function ajaxAction() {
        echo 'ajax!!';
    }

    public function testAction() {
        echo 'test222';
    }

    public function loginAction() {
        echo 'index';
    }

}

참고


?를 customer포함한 모든 요청을 무시하지는 example.com/customer/address/new/않습니까? 이 새 모듈에 주소 컨트롤러가없는 경우 모든 /customer/address/*요청은 이제 404
Nick Rolando
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.