Jak dynamicznie włączać / wyłączać <preferencje> w pliku di.xml?

10

Obecnie mam <preference/>jeden z moich plików di.xml:

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

Mam opcję włączania / wyłączania konfiguracji dla mojego modułu w panelu administracyjnym. Chcę tylko, <preference>aby była włączona, gdy moja niestandardowa opcja konfiguracji jest ustawiona na włączone.

Jak mogę dynamicznie włączać i wyłączać <preference/>zastępowanie zgodnie z konfiguracją mojego modułu?

ksenon
źródło

Odpowiedzi:

13

nie można włączać i / lub wyłączać preferencji na podstawie ustawienia konfiguracji.
di.xmlto tylko konfiguracja. nie możesz mieć w tym logiki, ale możesz zrobić coś innego.
Możesz mieć w swojej klasie warunek, który sprawdza flagę config i odpowiednio wykonuje pewne działania.
Zakładam, że twoja klasa RadTest\TestModule\Controller\Contact\Postrozszerza się, Magento\Contact\Controller\Index\Postponieważ musisz przesłonić co najmniej jedną metodę.
powiedzmy, że musisz zastąpić metodę execute.
Możesz zmusić swoją klasę do zrobienia tego:

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
    }
}
Marius
źródło
1
Właśnie to robiłem i myślałem, że będzie miło, jeśli będzie sposób na ich dynamiczne wyłączenie. Teraz wiem, że nie możemy. Wielkie dzięki! :)
xenon,