orderLoader = $orderLoader; $this->_coreRegistry = $registry; parent::__construct($context); } /** * Action for reorder * * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $result = $this->orderLoader->load($this->_request); if ($result instanceof \Magento\Framework\Controller\ResultInterface) { return $result; } $order = $this->_coreRegistry->registry('current_order'); /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); /* @var $cart \Magento\Checkout\Model\Cart */ $cart = $this->_objectManager->get(\Magento\Checkout\Model\Cart::class); $items = $order->getItemsCollection(); foreach ($items as $item) { try { $cart->addOrderItem($item); } catch (\Magento\Framework\Exception\LocalizedException $e) { if ($this->_objectManager->get(\Magento\Checkout\Model\Session::class)->getUseNotice(true)) { $this->messageManager->addNoticeMessage($e->getMessage()); } else { $this->messageManager->addErrorMessage($e->getMessage()); } return $resultRedirect->setPath('*/*/history'); } catch (\Exception $e) { $this->messageManager->addExceptionMessage( $e, __('We can\'t add this item to your shopping cart right now.') ); return $resultRedirect->setPath('checkout/cart'); } } $cart->save(); return $resultRedirect->setPath('checkout/cart'); } }