Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Reorder.php
Go to the documentation of this file.
1 <?php
8 
12 
18 abstract class Reorder extends Action\Action implements HttpPostActionInterface
19 {
23  protected $orderLoader;
24 
28  protected $_coreRegistry;
29 
35  public function __construct(
36  Action\Context $context,
39  ) {
40  $this->orderLoader = $orderLoader;
41  $this->_coreRegistry = $registry;
42  parent::__construct($context);
43  }
44 
50  public function execute()
51  {
52  $result = $this->orderLoader->load($this->_request);
53  if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
54  return $result;
55  }
56  $order = $this->_coreRegistry->registry('current_order');
58  $resultRedirect = $this->resultRedirectFactory->create();
59 
60  /* @var $cart \Magento\Checkout\Model\Cart */
61  $cart = $this->_objectManager->get(\Magento\Checkout\Model\Cart::class);
62  $items = $order->getItemsCollection();
63  foreach ($items as $item) {
64  try {
65  $cart->addOrderItem($item);
66  } catch (\Magento\Framework\Exception\LocalizedException $e) {
67  if ($this->_objectManager->get(\Magento\Checkout\Model\Session::class)->getUseNotice(true)) {
68  $this->messageManager->addNoticeMessage($e->getMessage());
69  } else {
70  $this->messageManager->addErrorMessage($e->getMessage());
71  }
72  return $resultRedirect->setPath('*/*/history');
73  } catch (\Exception $e) {
74  $this->messageManager->addExceptionMessage(
75  $e,
76  __('We can\'t add this item to your shopping cart right now.')
77  );
78  return $resultRedirect->setPath('checkout/cart');
79  }
80  }
81 
82  $cart->save();
83  return $resultRedirect->setPath('checkout/cart');
84  }
85 }
$order
Definition: order.php:55
__()
Definition: __.php:13
__construct(Action\Context $context, OrderLoaderInterface $orderLoader, Registry $registry)
Definition: Reorder.php:35
$items