Di.xml dosyasında <preference> dinamik olarak nasıl etkinleştirilir / devre dışı bırakılır?


10

Şu anda <preference/>di.xml dosyamdan birinde aşağıdakiler var :

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

Yönetici panelinde modülüm için bir etkinleştirme / devre dışı bırakma seçeneğim var. Yalnızca <preference>özel yapılandırma seçeneğim etkin olarak ayarlandığında etkinleştirilmesini istiyorum.

<preference/>Modülümün yapılandırmasına göre geçersiz kılmayı dinamik olarak nasıl etkinleştirebilir ve devre dışı bırakabilirim ?

Yanıtlar:


13

yapılandırma ayarlarına bağlı olarak tercihleri ​​etkinleştiremez ve / veya devre dışı bırakamazsınız.
di.xmlsadece yapılandırmadır. içinde mantık olamaz ama başka bir şey yapabilirsiniz.
Sınıfınızda yapılandırma bayrağınızı kontrol eden ve buna göre bazı işlemler yapan bir koşula sahip olabilirsiniz.
Sınıfınızın RadTest\TestModule\Controller\Contact\Postgenişlediğini varsayıyorum Magento\Contact\Controller\Index\Postçünkü en az bir yöntemi geçersiz kılmak zorundasınız.
diyelim ki yöntemi geçersiz kılmanız gerekiyor execute.
Sınıfınızın bunu yapmasını sağlayabilirsiniz:

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
Bu aslında yaptığım şeydi ve onları dinamik olarak devre dışı bırakmanın bir yolu varsa iyi olacağını düşünüyordum. Şimdi yapamayacağımızı biliyorum. Çok teşekkürler! :)
xenon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.