Tôi cần ghi đè phương thức preDispatch của bộ điều khiển lõi. Bộ điều khiển lõi kế thừa từ Mage_Checkout_Controller_Action
, bản thân nó có một phương thức preDispatch cần được gọi. Vì tôi đang mở rộng từ bộ điều khiển lõi mà tôi muốn ghi đè, tôi không thể gọi parent::preDispatch()
, vì điều đó sẽ kéo theo chức năng mà tôi đang cố gắng tránh.
Câu hỏi của tôi là - Làm thế nào tôi có thể gọi một phương thức được ghi đè cao hơn 2 cấp trong chuỗi thừa kế, hoặc tôi chỉ đang thực hiện sai cách này?
Cập nhật
Rõ ràng điều này hoạt động:
Mage_Checkout_Controller_Action::preDispatch();
(mặc dù phương pháp đó không tĩnh, tôi đoán bạn học được điều gì đó mới mỗi ngày ..)
Bây giờ câu hỏi của tôi là: Có cách nào tốt hơn để làm điều này mà không phải sao chép tất cả các chức năng từ lớp tôi đang ghi đè?
Lý do tôi cố gắng này là vì tôi đã đi theo con đường này , cố gắng buộc Magento nhớ các bài tập địa chỉ khi khách hàng trải qua kiểm tra nhiều lần và sau đó rời đi. (FWIW, tôi thấy bài viết được liên kết với bài viết rất hay giúp tôi đi đúng hướng, nhưng dường như còn thiếu rất nhiều các bước cần thực hiện để làm việc này).
Bộ điều khiển mà tôi ghi đè là MultiShippingContoder lõi có chuyển hướng quay lại IndexAction đa biến cần tránh. Nói một cách dễ hiểu, tôi đã hoàn thành chức năng này, tiết kiệm cho một số vấn đề (liên quan đến việc thêm mục đầu tiên vào giỏ hàng và Mage_Sales_Model_Quote_Item-> getQuoteItem () trả về null trong mẫu địa chỉ. đó là một cuộc thảo luận hoàn toàn khác nhau).
parent::someMethod()
không tĩnh, mà chỉ định một phần của cây thừa kế để duyệt qua trước khi gọi một phương thức trong$this
ngữ cảnh phù hợp của thể hiện của lớp hiện tại.