วิธีการแทนที่ 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 / โมดูล / 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 / รหัส / ท้องถิ่น / ใหม่ / Mage / ลูกค้า / 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 / รหัส / ท้องถิ่น / ใหม่ / Mage / ลูกค้า / ควบคุม / 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';
    }

}

ขอบคุณ!


ตรวจสอบที่นี่ ( magento.stackexchange.com/questions/91413/ … )
Minesh Patel

คำตอบ:


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>

ในแอป / รหัส / โลคัล / ใหม่ / Mage / etc / 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>

ตัวควบคุมจะตรวจสอบ / รหัส / ท้องถิ่น / ใหม่ / ผู้วิเศษ / ตัวควบคุม / 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.