Come abilitare / disabilitare dinamicamente <preference> in di.xml?


10

Attualmente ho il seguente <preference/>in uno dei miei file di.xml:

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

Ho un'opzione di abilitazione / disabilitazione della configurazione per il mio modulo nel pannello di amministrazione. Voglio <preference>che sia abilitato solo quando l'opzione di configurazione personalizzata è impostata su abilitato.

Come posso abilitare e disabilitare dinamicamente l' <preference/>override in base alla configurazione del mio modulo impostato?

Risposte:


13

non è possibile abilitare e / o disabilitare le preferenze in base a un'impostazione di configurazione.
di.xmlè solo configurazione. non puoi avere la logica, ma puoi fare qualcos'altro.
Puoi avere nella tua classe una condizione che controlla il tuo flag di configurazione e fa qualche azione di conseguenza.
Presumo che la tua classe si RadTest\TestModule\Controller\Contact\Postestenda Magento\Contact\Controller\Index\Postperché devi scavalcare almeno un metodo.
diciamo che devi ignorare il metodo execute.
Puoi fare in modo che la tua classe faccia questo:

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
Questo è in realtà quello che ho fatto e pensavo che sarebbe stato bello se ci fosse un modo per disabilitarli dinamicamente. Ora so che non possiamo. Molte grazie! :)
xenon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.