Estás leyendo la publicación: Cómo forzar solo un producto por pedido en Magento 2
espacio de nombres Proveedor\Extensión\Observador;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\Request\DataPersistorInterface;
use Magento\Framework\App\ObjectManager;
clase Cartadd implementa ObserverInterface {
protegido $_urlManager;
$_checkoutSession protegida;
protegido $_carrito;
protegido $_messageManager;
protegido $_redirect;
$_request protegido;
$_respuesta protegida;
protegido $_responseFactory;
protegido $_resultFactory;
protegido $_scopeConfig;
protegido $_producto;
función pública __construct(\Magento\Framework\UrlInterface $urlManager, \Magento\Checkout\Model\Session $checkoutSession, \Magento\Framework\App\Response\RedirectInterface $redirect, \Magento\Checkout\Model\Cart $cart, \Magento \Framework\Message\ManagerInterface $messageManager, \Magento\Framework\App\RequestInterface $solicitud, \Magento\Framework\App\ResponseInterface $respuesta, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Catalog\Model \Producto $producto, \Magento\Framework\App\ResponseFactory $responseFactory, \Magento\Framework\Controller\ResultFactory $resultFactory
) {
$this->_urlManager = $urlManager;
$this->_checkoutSession = $checkoutSession;
$this->_redirect = $redirect;
$esto->_carrito = $carrito;
$this->_messageManager = $messageManager;
$this->_request = $request;
$esto->_respuesta = $respuesta;
$this->_responseFactory = $responseFactory;
$this->_resultFactory = $resultFactory;
$this->_scopeConfig = $scopeConfig;
$este->_producto = $producto;
}
función pública ejecutar (\Magento\Framework\Evento\Observador $observador) {
$controlador = $observador->getControllerAction();
$postValues = $this->_request->getPostValue();
$preciocarrito = $esto->_carrito->obtenerPresupuesto()->getData();
$cartItemsCount = $this->_cart->getQuote()->getItemsCount();
$cartItemsAll = $this->_cart->getQuote()->getAllItems();
si ($cartItemsCount > 0)
{
$observador->getRequest()->setParam(‘producto’, false);
$observador->getRequest()->setParam(‘return_url’, $this->_redirect->getRefererUrl());
$observador->getRequest()->setParam(‘backUrl’, $this->_redirect->getRefererUrl());
$this->_messageManager->addError(__(‘Solo se permite comprar 1 producto a la vez.’));
}
}
}