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;
    ...
}

次に、2つのケースが考えられます

あなたが顧客のメールを持っていると仮定します

次に、コードで次のコードを呼び出して、顧客がニュースレターを購読しているかどうかを確認できます。

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

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

お客様IDがあると仮定します

次のコードを呼び出すことができます。

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

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

このコードはどこで実行しますか?
styzzz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.