Magento 2 Kiểm tra nếu khách hàng đăng ký nhận bản tin


8

Tôi đang phát triển xuất / nhập xml tùy chỉnh này. Trong magento 2, làm cách nào để kiểm tra xem khách hàng có đăng ký nhận bản tin không? Ngay bây giờ tôi đang tải nhà máy của khách hàng.

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

Nhưng điều này không cung cấp thông tin về bản tin là có một mô hình khác tôi phải tải không?

Câu trả lời:


21

Đầu tiên tiêm \Magento\Newsletter\Model\Subscriberlớp trong hàm tạo của bạn:

protected $_subscriber;

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

Sau đó, bạn có hai trường hợp có thể

Giả sử bạn có email khách hàng

Sau đó, trong mã của bạn, bạn có thể gọi mã sau đây để kiểm tra xem khách hàng có đăng ký bản tin hay không:

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

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

Giả sử bạn có id khách hàng

Bạn có thể gọi mã sau đây:

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

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

bạn sẽ thực thi mã này ở đâu?
styzzz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.