Seuraava artikkeli auttaa sinua: Kuinka ottaa Ajax-uutiskirje käyttöön Magento 2:ssa
/**
*
*/
nimiavaruus Vendor\Extension\Controller\Plugin\Subscriber;
käytä Magento\Customer\Api\AccountManagementInterfacea CustomerAccountManagement-sovelluksena;
käytä Magento\Customer\Model\Session;
käytä Magento\Customer\Model\Url-osoitetta CustomerUrl-osoitteena;
käytä Magento\Framework\App\Action\Context;
käytä Magento\Store\Model\StoreManagerInterfacea;
käytä Magento\Newsletter\Model\SubscriberFactory;
/**
* Luokka NewAction
*/
luokka NewAction laajentaa \Magento\Newsletter\Controller\Subscriber\NewAction
{
/**
* @var CustomerAccountManagement
*/
suojattu $customerAccountManagement;
suojattu $resultJsonFactory;
/**
* Alusta riippuvuudet.
*
* @param Context $context
* @param SubscriberFactory $subscriberFactory
* @param Session $customerSession
* @param StoreManagerInterface $storeManager
* @param CustomerUrl $customerUrl
* @param CustomerAccountManagement $customerAccountManagement
*/
julkinen funktio __construct(
konteksti $konteksti,
SubscriberFactory $subscriberFactory,
Istunto $customerSession,
StoreManagerInterface $storeManager,
CustomerUrl $customerUrl,
CustomerAccountManagement $customerAccountManagement,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
)
{
$this->customerAccountManagement = $customerAccountManagement;
$this->resultJsonFactory = $resultJsonFactory;
vanhempi::__konstrukti(
$context,
$subscriberFactory,
$customerSession,
$storeManager,
$customerUrl,
$customerAccountManagement
);
}
/**
* Hae käytettävissä olevien tilauskenttien luettelo
*
* @return array
*/
julkinen toiminto noin Execute($subject, $procede)
{
$vastaus = [];
if ($this->getRequest()->isPost() && $this->getRequest()->getPost(‘sähköposti’)) {
$sähköposti = (merkkijono)$this->getRequest()->getPost(‘sähköposti’);
yrittää {
$this->validateEmailFormat($email);
$this->validateGuestSubscription();
$this->validateEmailAvailable($email);
$tila = $this->_subscriberFactory->luo()->tilaa($sähköposti);
if ($status == \Magento\Newsletter\Model\Subscriber::STATUS_NOT_ACTIVE) {
$vastaus = [
‘status’ => ‘OK’,
‘msg’ => ‘The confirmation request has been sent.’,
];
} muu {
$vastaus = [
‘status’ => ‘OK’,
‘msg’ => ‘Thank you for your subscription.’,
];
}
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$vastaus = [
‘status’ => ‘ERROR’,
‘msg’ => __(‘There was a problem with the subscription: %1’, $e->getMessage()),
];
} saalis (\poikkeus $e) {
$vastaus = [
‘status’ => ‘ERROR’,
‘msg’ => __(‘Something went wrong with the subscription.’),
];
}
}
return $this->resultJsonFactory->create()->setData($response);
}
}