¿Cómo habilitar / deshabilitar dinámicamente <preferencia> en di.xml?

10

Actualmente tengo lo siguiente <preference/>en uno de mis archivos di.xml:

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

Tengo una opción de configuración para habilitar / deshabilitar mi módulo en el panel de administración. Solo quiero <preference>que esté habilitado cuando mi opción de configuración personalizada esté habilitada.

¿Cómo puedo habilitar y deshabilitar dinámicamente la <preference/>anulación de acuerdo con la configuración de mi módulo?

xenón
fuente

Respuestas:

13

no puede habilitar o deshabilitar preferencias basadas en una configuración de configuración.
di.xmlEs solo configuración. no puedes tener lógica, pero puedes hacer otra cosa.
Puede tener en su clase una condición que verifique su bandera de configuración y realice alguna acción en consecuencia.
Supongo que su clase se RadTest\TestModule\Controller\Contact\Postextiende Magento\Contact\Controller\Index\Postporque debe anular al menos un método.
Digamos que tienes que anular el método execute.
Puedes hacer que tu clase haga esto:

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
fuente
1
Esto es realmente lo que he estado haciendo y pensé que sería bueno si hay una forma de deshabilitarlos dinámicamente. Ahora sé que no podemos. ¡Muchas gracias! :)
xenón