Làm cách nào để tự động bật / tắt <ưu tiên> trong di.xml?


10

Tôi hiện có các <preference/>tệp sau trong một trong các tệp di.xml của mình:

<preference for="Magento\Contact\Controller\Index\Post" type="RadTest\TestModule\Controller\Contact\Post" />

Tôi có một tùy chọn cấu hình bật / tắt cho mô-đun của mình trong bảng quản trị. Tôi chỉ muốn <preference>được bật khi tùy chọn cấu hình tùy chỉnh của tôi được đặt thành bật.

Làm cách nào tôi có thể tự động kích hoạt và vô hiệu hóa phần ghi <preference/>đè theo cấu hình của mô-đun của tôi được đặt?

Câu trả lời:


13

bạn không thể bật và / hoặc tắt tùy chọn dựa trên cài đặt cấu hình.
di.xmlchỉ là cấu hình. bạn không thể có logic trong đó, nhưng bạn có thể làm một cái gì đó khác.
Bạn có thể có trong lớp một điều kiện kiểm tra cờ cấu hình của bạn và thực hiện một số hành động tương ứng.
Tôi giả sử lớp của bạn RadTest\TestModule\Controller\Contact\Postmở rộng Magento\Contact\Controller\Index\Postvì bạn phải ghi đè ít nhất một phương thức.
giả sử bạn phải ghi đè phương thức execute.
Bạn có thể làm cho lớp của bạn làm điều này:

namespace RadTest\TestModule\Controller\Contact;
class Post extends \Magento\Contact\Controller\Index\Post
{
    ....
    public function execute()
    {
        if (your config setting is disabled) {
            return parent::execute();
        }
        //your custom logic here
    }
}

1
Đây thực sự là những gì tôi đã làm và nghĩ rằng nó sẽ tốt hơn nếu có một cách để tự động vô hiệu hóa chúng. Bây giờ tôi biết chúng ta không thể. Cảm ơn rất nhiều! :)
xenon
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.