Magento 2 Vérifier si le client est abonné à la newsletter

8

Je développe cette exportation / importation xml personnalisée. Dans magento 2, comment puis-je vérifier si un client est abonné à la newsletter? En ce moment, je charge l'usine du client.

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

Mais cela ne donne pas d'informations sur la newsletter y a-t-il un autre modèle que je dois charger?

André Ferraz
la source

Réponses:

21

Injectez d'abord la \Magento\Newsletter\Model\Subscriberclasse dans votre constructeur:

protected $_subscriber;

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

Ensuite, vous avez deux cas possibles

En supposant que vous avez l'e-mail du client

Ensuite, dans votre code, vous pouvez appeler le code suivant pour vérifier si le client est ou non abonné à la newsletter:

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

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

En supposant que vous ayez l'ID client

Vous pouvez appeler le code suivant:

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

if ($checkSubscriber->isSubscribed()) {
    // Customer is subscribed
} else {
    // Customer is not subscribed
}
Raphael chez Digital Pianism
la source
où exécuteriez-vous ce code?
styzzz