Estás leyendo la publicación: Cómo habilitar el boletín Ajax en Magento 2
/**
*
*/
espacio de nombres Proveedor\Extensión\Controlador\Complemento\Suscriptor;
use Magento\Customer\Api\AccountManagementInterface como CustomerAccountManagement;
use Magento\Cliente\Modelo\Sesión;
use Magento\Customer\Model\Url como CustomerUrl;
use Magento\Framework\App\Action\Context;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Newsletter\Model\SubscriberFactory;
/**
* Clase NuevaAcción
*/
clase NewAction extiende \Magento\Newsletter\Controller\Subscriber\NewAction
{
/**
* @var Gestión de cuentas de clientes
*/
protegido $ gestión de cuenta de cliente;
protegido $resultadoJsonFactory;
/**
* Inicializar dependencias.
*
* @param Contexto $contexto
* @param Fábrica de suscriptores $ Fábrica de suscriptores
* @param Sesión $clienteSesión
* @param StoreManagerInterface $storeManager
* @param CustomerUrl $clienteUrl
* @param CustomerAccountManagement $customerAccountManagement
*/
función pública __construir(
Contexto $contexto,
Fábrica de suscriptores $ Fábrica de suscriptores,
Sesión $sesióncliente,
StoreManagerInterface $storeManager,
URL del cliente $ URL del cliente,
Gestión de cuentas de clientes $ gestión de cuentas de clientes,
\Magento\Framework\Controlador\Resultado\JsonFactory $resultadoJsonFactory
)
{
$this->customerAccountManagement = $customerAccountManagement;
$this->resultJsonFactory = $resultJsonFactory;
padre::__construir(
$contexto,
$suscriptorFactory,
$sesióncliente,
$storeManager,
$URLcliente,
$administracióndecuentacliente
);
}
/**
* Recuperar la lista de campos de pedidos disponibles
*
* Matriz @return
*/
función pública aroundExecute($sujeto, $procedimiento)
{
$respuesta = [];
if ($this->getRequest()->isPost() && $this->getRequest()->getPost(’email’)) {
$email = (cadena)$this->getRequest()->getPost(’email’);
intentar {
$this->validateEmailFormat($email);
$this->validateGuestSubscription();
$this->validateEmailAvailable($email);
$status = $this->_subscriberFactory->create()->subscribe($email);
if ($status == \Magento\Newsletter\Model\Subscriber::STATUS_NOT_ACTIVE) {
$respuesta = [
‘status’ => ‘OK’,
‘msg’ => ‘The confirmation request has been sent.’,
];
} demás {
$respuesta = [
‘status’ => ‘OK’,
‘msg’ => ‘Thank you for your subscription.’,
];
}
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$respuesta = [
‘status’ => ‘ERROR’,
‘msg’ => __(‘There was a problem with the subscription: %1’, $e->getMessage()),
];
} atrapar (\Excepción $e) {
$respuesta = [
‘status’ => ‘ERROR’,
‘msg’ => __(‘Something went wrong with the subscription.’),
];
}
}
devuelve $this->resultJsonFactory->create()->setData($response);
}
}