Ghi đè bộ điều khiển trong adminhtml


7

Hiện tại tôi đang cố gắng ghi đè Trình điều khiển nhóm của Mage_Adminhtml_Customer để tôi có thể thêm một số mã để lưu trường tùy chỉnh của mình trong menu Nhóm khách hàng. Như bạn có thể nghĩ rằng nó không thực sự hoạt động như tôi muốn, điều đó có nghĩa là có vẻ như bộ điều khiển của tôi bị Magento phớt lờ cho đến nay nhưng tôi không mắc phải sai lầm mà tôi đã mắc phải. Dưới đây là đoạn trích:

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Và bộ điều khiển:

require_once 'Mage/Adminhtml/Customer/controllers/GroupController.php';

class Mynamespace_CustomerGroupReturnable_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}

Bất cứ ai cũng có thể nhìn thấy những gì còn thiếu? Cảm ơn!


1
Tôi nghĩ rằng bạn đang yêu cầu các tập tin sai. Điều này Mage/Adminhtml/Customer/controllers/GroupController.phpnên làMage/Adminhtml/controllers/Customer/GroupController.php
Marius

Ồ, vâng, bạn đúng. Cảm ơn bạn! Tuy nhiên Magento vẫn không ngạc nhiên và bỏ qua nó.
HamuSumo

Câu trả lời:


14

Đặt tập tin điều khiển của bạn dưới một thư mục admintml. Tốt hơn là sử dụng một đường dẫn thư mục tương tự của lớp mà bạn sẽ ghi đè.

cấu hình

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable_Adminhtml</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Tập tin điều khiển:

require_once 'Mage/Adminhtml/controllers/Customer/GroupController.php';

class Mynamespace_CustomerGroupReturnable_Adminhtml_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}

Đúng, thư mục adminhtml bị thiếu đã gây rắc rối. Cảm ơn!
HamuSumo

2
Và cũng như vậy (QUAN TRỌNG cho phương pháp này) rằng đường dẫn đến bộ điều khiển dưới dạng adminhtml phù hợp với đường dẫn của bộ điều khiển quá tải. ví dụ: Mage / adminhtml / bộ điều khiển / Danh mục / sản phẩmControll.php My_Module / bộ điều khiển / adminhtml / Danh mục / sản
phẩmContoder.php

0

Ok bắt đầu thử nghiệm.

Đầu tiên thêm một khuôn trước định nghĩa lớp để kiểm tra xem tệp lớp đã được tải chưa.

Sau đó thêm một khoảng trắng <conf ig>để kiểm tra xem tệp cấu hình của bạn đã được tải chưa.

Đánh dấu vào backend System > Config > Advancedcho dù bạn có thể ngăn chặn đầu ra của mô-đun của bạn (nếu có, module.xmltrong app/etc/modulesít nhất là nạp)

Bạn kiểm tra url nào? nên là:

http: //magento.local/ / nhóm / lưu

Vô hiệu hóa khóa xác thực trong phần phụ trợ (đừng hỏi tôi ở đâu) để ngăn lỗi với khóa xác thực bị thiếu trong url

Và những lời cuối cùng: Mã có vẻ tốt, tôi nghĩ rằng sai lầm là ở một nơi khác.

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.