Cách ghi đè bộ điều khiển AccountContoder


12

Tôi cần ghi đè Bộ điều khiển phương thức

Core/Mage/Customer/controllers/AccountController.php 

và thêm một phương thức mới. Vì bộ điều khiển này để chỉnh sửa là sai - nó sẽ bị ghi đè.

Theo yêu cầu của dự án, ghi đè bộ điều khiển phải ở

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

Để làm điều này, hãy tạo một cấu hình tệp, nhưng địa chỉ customer/account/test, customer/account /ajaxkhông phản hồi và customer/account/loginNó không bị ghi đè. Xin hãy giúp đỡ trong việc thực hiện này.

ứng dụng / ứng dụng / etc / mô-đun / New_Mage_Customer.xml

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

ứng dụng / mã / cục bộ / Mới / Mage / Khách hàng / 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>

ứng dụng / mã / cục bộ / Mới / Mage / Khách hàng / bộ điều khiển / AccountControll.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';
    }

}

Cảm ơn!


Câu trả lời:


22

Tên tệp sẽ là app / etc / module / New_Mage.xml

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

Trong ứng dụng / mã / cục bộ / Mới / 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>

bộ điều khiển sẽ ứng dụng / code / local / New / Mage / controls / AccountControll.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';
    }

}

Tài liệu tham khảo


Điều này sẽ không ghi đè tất cả các customeryêu cầu, bao gồm example.com/customer/address/new/? và nếu không có bộ điều khiển địa chỉ trong mô-đun mới này, tất cả các /customer/address/*yêu cầu sẽ ngay bây giờ 404
Nick Rolando
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.