123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Checkout\Controller\Cart;
- use Magento\Checkout\Model\Cart\RequestQuantityProcessor;
- use Magento\Framework\App\Action\HttpPostActionInterface;
- use Magento\Framework\App\Action\HttpGetActionInterface;
- /**
- * Post update shopping cart.
- */
- class UpdatePost extends \Magento\Checkout\Controller\Cart implements HttpGetActionInterface, HttpPostActionInterface
- {
- /**
- * @var RequestQuantityProcessor
- */
- private $quantityProcessor;
- /**
- * @param \Magento\Framework\App\Action\Context $context
- * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
- * @param \Magento\Checkout\Model\Session $checkoutSession
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
- * @param \Magento\Checkout\Model\Cart $cart
- * @param RequestQuantityProcessor $quantityProcessor
- */
- public function __construct(
- \Magento\Framework\App\Action\Context $context,
- \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
- \Magento\Checkout\Model\Session $checkoutSession,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator,
- \Magento\Checkout\Model\Cart $cart,
- RequestQuantityProcessor $quantityProcessor = null
- ) {
- parent::__construct(
- $context,
- $scopeConfig,
- $checkoutSession,
- $storeManager,
- $formKeyValidator,
- $cart
- );
- $this->quantityProcessor = $quantityProcessor ?: $this->_objectManager->get(RequestQuantityProcessor::class);
- }
- /**
- * Empty customer's shopping cart
- *
- * @return void
- */
- protected function _emptyShoppingCart()
- {
- try {
- $this->cart->truncate()->save();
- } catch (\Magento\Framework\Exception\LocalizedException $exception) {
- $this->messageManager->addErrorMessage($exception->getMessage());
- } catch (\Exception $exception) {
- $this->messageManager->addExceptionMessage($exception, __('We can\'t update the shopping cart.'));
- }
- }
- /**
- * Update customer's shopping cart
- *
- * @return void
- */
- protected function _updateShoppingCart()
- {
- try {
- $cartData = $this->getRequest()->getParam('cart');
- if (is_array($cartData)) {
- if (!$this->cart->getCustomerSession()->getCustomerId() && $this->cart->getQuote()->getCustomerId()) {
- $this->cart->getQuote()->setCustomerId(null);
- }
- $cartData = $this->quantityProcessor->process($cartData);
- $cartData = $this->cart->suggestItemsQty($cartData);
- $this->cart->updateItems($cartData)->save();
- }
- } catch (\Magento\Framework\Exception\LocalizedException $e) {
- $this->messageManager->addErrorMessage(
- $this->_objectManager->get(\Magento\Framework\Escaper::class)->escapeHtml($e->getMessage())
- );
- } catch (\Exception $e) {
- $this->messageManager->addExceptionMessage($e, __('We can\'t update the shopping cart.'));
- $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
- }
- }
- /**
- * Update shopping cart data action
- *
- * @return \Magento\Framework\Controller\Result\Redirect
- */
- public function execute()
- {
- if (!$this->_formKeyValidator->validate($this->getRequest())) {
- return $this->resultRedirectFactory->create()->setPath('*/*/');
- }
- $updateAction = (string)$this->getRequest()->getParam('update_cart_action');
- switch ($updateAction) {
- case 'empty_cart':
- $this->_emptyShoppingCart();
- break;
- case 'update_qty':
- $this->_updateShoppingCart();
- break;
- default:
- $this->_updateShoppingCart();
- }
- return $this->_goBack();
- }
- }
|