Magento 2 Überprüfen Sie, ob der Kunde den Newsletter abonniert hat

8

Ich entwickle diesen benutzerdefinierten XML-Export / Import. Wie kann ich in Magento 2 überprüfen, ob ein Kunde einen Newsletter abonniert hat? Im Moment lade ich die Kundenfabrik.

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

Dies gibt jedoch keine Auskunft über den Newsletter. Gibt es ein anderes Modell, das ich laden muss?

André Ferraz
quelle

Antworten:

21

Fügen Sie zuerst die \Magento\Newsletter\Model\SubscriberKlasse in Ihren Konstruktor ein:

protected $_subscriber;

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

Dann haben Sie zwei mögliche Fälle

Vorausgesetzt, Sie haben die Kunden-E-Mail

Dann können Sie in Ihrem Code den folgenden Code aufrufen, um zu überprüfen, ob der Kunde den Newsletter abonniert hat oder nicht:

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

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

Angenommen, Sie haben die Kunden-ID

Sie können den folgenden Code aufrufen:

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

if ($checkSubscriber->isSubscribed()) {
    // Customer is subscribed
} else {
    // Customer is not subscribed
}
Raphael beim digitalen Pianismus
quelle
Wo würden Sie diesen Code ausführen?
Styzzz