Magento 2 Проверьте, подписан ли клиент на новостную рассылку


8

Я разрабатываю этот пользовательский экспорт / импорт XML. В magento 2, как я могу проверить, подписан ли клиент на рассылку? Прямо сейчас я загружаю фабрику клиента.

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

Но это не дает информации о рассылке, есть ли другая модель, которую я должен загрузить?

Ответы:


21

Сначала добавьте \Magento\Newsletter\Model\Subscriberкласс в ваш конструктор:

protected $_subscriber;

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

Тогда у вас есть два возможных случая

Предполагая, что у вас есть электронная почта клиента

Затем в своем коде вы можете вызвать следующий код, чтобы проверить, подписан ли клиент на рассылку:

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

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

Если у вас есть идентификатор клиента

Вы можете позвонить по следующему коду:

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

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

где бы вы выполнили этот код?
styzzz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.