Magento 2 Compruebe si el cliente está suscrito al boletín

8

Estoy desarrollando esta exportación / importación xml personalizada. En magento 2, ¿cómo puedo verificar si un cliente está suscrito al boletín? En este momento estoy cargando la fábrica del cliente.

\Magento\Framework\App\ObjectManager::getInstance()->create('Magento\Customer\Model\Customer');

Pero esto no da información sobre el boletín, ¿hay otro modelo que deba cargar?

André Ferraz
fuente

Respuestas:

21

Primero inyecta la \Magento\Newsletter\Model\Subscriberclase en tu constructor:

protected $_subscriber;

public function __construct(
    ...
    \Magento\Newsletter\Model\Subscriber $subscriber
    ...
){
    ...
    $this->_subscriber= $subscriber;
    ...
}

Entonces tienes dos casos posibles

Suponiendo que tiene el correo electrónico del cliente

Luego, en su código, puede llamar al siguiente código para verificar si el cliente está o no suscrito al boletín:

$checkSubscriber = $this->_subscriber->loadByEmail($customerEmail);

if ($checkSubscriber->isSubscribed()) {
    // Customer is subscribed
} else {
    // Customer is not subscribed
}

Asumiendo que tiene la identificación del cliente

Puedes llamar al siguiente código:

$checkSubscriber = $this->_subscriber->loadByCustomerId($customerId);

if ($checkSubscriber->isSubscribed()) {
    // Customer is subscribed
} else {
    // Customer is not subscribed
}
Raphael en Digital Pianism
fuente
¿Dónde ejecutarías este código?
styzzz