Magento 2 Verifique se o cliente está inscrito na Newsletter

8

Estou desenvolvendo essa exportação / importação personalizada de xml. No magento 2, como posso verificar se um cliente está inscrito na newsletter? No momento, estou carregando a fábrica do cliente.

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

Mas isso não fornece informações sobre o boletim. Existe outro modelo que tenho que carregar?

André Ferraz
fonte

Respostas:

21

Primeiro injete a \Magento\Newsletter\Model\Subscriberclasse no seu construtor:

protected $_subscriber;

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

Então você tem dois casos possíveis

Supondo que você tenha o e-mail do cliente

Em seu código, você pode chamar o código a seguir para verificar se o cliente está ou não inscrito no boletim:

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

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

Supondo que você tenha o ID do cliente

Você pode chamar o seguinte código:

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

if ($checkSubscriber->isSubscribed()) {
    // Customer is subscribed
} else {
    // Customer is not subscribed
}
Raphael na Digital Pianism
fonte
onde você executaria esse código?
Styzzz 27/08/19