|
8 | 8 | use Magento\Catalog\Api\ProductRepositoryInterface;
|
9 | 9 | use Magento\Catalog\Model\Product;
|
10 | 10 | use Magento\Checkout\Model\Cart\CartInterface;
|
11 |
| -use Magento\Framework\Exception\NoSuchEntityException; |
12 | 11 | use Magento\Framework\DataObject;
|
| 12 | +use Magento\Framework\Exception\NoSuchEntityException; |
13 | 13 |
|
14 | 14 | /**
|
15 | 15 | * Shopping cart model
|
@@ -90,6 +90,11 @@ class Cart extends DataObject implements CartInterface
|
90 | 90 | */
|
91 | 91 | protected $productRepository;
|
92 | 92 |
|
| 93 | + /** |
| 94 | + * @var \Magento\Checkout\Model\Cart\RequestInfoFilterInterface |
| 95 | + */ |
| 96 | + private $requestInfoFilter; |
| 97 | + |
93 | 98 | /**
|
94 | 99 | * @param \Magento\Framework\Event\ManagerInterface $eventManager
|
95 | 100 | * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
|
@@ -310,22 +315,27 @@ protected function _getProduct($productInfo)
|
310 | 315 | *
|
311 | 316 | * @param \Magento\Framework\DataObject|int|array $requestInfo
|
312 | 317 | * @return \Magento\Framework\DataObject
|
| 318 | + * @throws \Magento\Framework\Exception\LocalizedException |
313 | 319 | */
|
314 | 320 | protected function _getProductRequest($requestInfo)
|
315 | 321 | {
|
316 | 322 | if ($requestInfo instanceof \Magento\Framework\DataObject) {
|
317 | 323 | $request = $requestInfo;
|
318 | 324 | } elseif (is_numeric($requestInfo)) {
|
319 | 325 | $request = new \Magento\Framework\DataObject(['qty' => $requestInfo]);
|
320 |
| - } else { |
| 326 | + } elseif (is_array($requestInfo)) { |
321 | 327 | $request = new \Magento\Framework\DataObject($requestInfo);
|
| 328 | + } else { |
| 329 | + throw new \Magento\Framework\Exception\LocalizedException( |
| 330 | + __('We found an invalid request for adding product to quote.') |
| 331 | + ); |
322 | 332 | }
|
323 | 333 |
|
324 | 334 | if (!$request->hasQty()) {
|
325 | 335 | $request->setQty(1);
|
326 | 336 | }
|
327 |
| - !$request->hasFormKey() ?: $request->unsFormKey(); |
328 | 337 |
|
| 338 | + $this->getRequestInfoFilter()->filter($request); |
329 | 339 | return $request;
|
330 | 340 | }
|
331 | 341 |
|
@@ -720,4 +730,19 @@ public function updateItem($itemId, $requestInfo = null, $updatingParams = null)
|
720 | 730 | $this->_checkoutSession->setLastAddedProductId($productId);
|
721 | 731 | return $result;
|
722 | 732 | }
|
| 733 | + |
| 734 | + /** |
| 735 | + * Getter for RequestInfoFilter |
| 736 | + * |
| 737 | + * @deprecated |
| 738 | + * @return \Magento\Checkout\Model\Cart\RequestInfoFilterInterface |
| 739 | + */ |
| 740 | + private function getRequestInfoFilter() |
| 741 | + { |
| 742 | + if ($this->requestInfoFilter === null) { |
| 743 | + $this->requestInfoFilter = \Magento\Framework\App\ObjectManager::getInstance() |
| 744 | + ->get(\Magento\Checkout\Model\Cart\RequestInfoFilterInterface::class); |
| 745 | + } |
| 746 | + return $this->requestInfoFilter; |
| 747 | + } |
723 | 748 | }
|
0 commit comments