Як динамічно увімкнути / відключити <preference> у di.xml?


10

Наразі <preference/>в одному з моїх файлів di.xml є таке:

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

У мене на панелі адміністратора є параметр включення / відключення мого модуля. Я хочу, <preference>щоб це було ввімкнено лише тоді, коли для моєї спеціальної опції налаштування встановлено ввімкнено

Як я можу динамічно включати та вимикати <preference/>переопределення відповідно до встановленої конфігурації мого модуля?

Відповіді:


13

ви не можете вмикати та / або відключати налаштування на основі налаштування конфігурації.
di.xmlце лише конфігурація. у вас не може бути логіки, але ви можете зробити щось інше.
Ви можете мати у своєму класі умову, яка перевіряє ваш конфігураційний прапор і виконує певні дії відповідно.
Я припускаю, що ваш клас RadTest\TestModule\Controller\Contact\Postпоширюється, Magento\Contact\Controller\Index\Postоскільки вам доведеться перекрити принаймні один метод.
скажімо, ви повинні перекрити метод execute.
Ви можете змусити ваш клас робити це:

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
Це насправді те, що я робив, і думав, що буде добре, якщо є спосіб їх динамічно відключити. Тепер я знаю, що ми не можемо. Дуже дякую! :)
ксенон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.