Моя цель:
Magento 2.2.5
Если клиент выбрал вариант [Добавить корзину], а затем нажмите [Перейти к покупке], я добавлю продукт [Корзина] в корзину и перенаправлю на страницу подтверждения.
Страница корзины → Страница подтверждения
Исходный код:
public function addShoppingBag()
{
$shoppingBagSku = $this->helper->getShoppingBagSku();
$shoppingBagId = $this->productRepository->get($shoppingBagSku)->getId();
$shoppingBagProduct = $this->productFactory->create()->load($shoppingBagId);
$quote = $this->checkoutSession->getQuote();
$params = array(
'product' => $shoppingBagProduct->getId(),
'qty' => 1,
'price' => intval($shoppingBagProduct->getPrice())
);
$request = new \Magento\Framework\DataObject();
$request->setData($params);
$quote->addProduct($shoppingBagProduct, $request);
$quote->getShippingAddress()->setCollectShippingRates(true);
$this->quoteRepository->save($quote);
$quote->collectTotals();
}
Проблема:
Я проверил quote_item таблица, товар был добавлен, но все атрибуты, связанные с ценой, равны 0.
quote_address_item таблица в порядке, все цены правильные. Проблема только в quote_item.
Вещи, которые я пробовал
$this->cart->addProduct($shoppingBagProduct, $request);
$this->cart->save();
$this->cart->getQuote()->setTotalsCollectedFlag(false)->collectTotals()->save();
Цена quote_item будет обновлена, но она снова будет перенаправлена на страницу корзины из-за следующего кода:
/ magento2 / источник / продавец / Magento / модуль-multishipping / контроллер / Checkout.php
if ($this->_getCheckoutSession()->getCartWasUpdated(true)
&&
!in_array($action, ['index', 'login', 'register', 'addresses', 'success'])
) {
$this->getResponse()->setRedirect($this->_getHelper()->getCartUrl());
$this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
return parent::dispatch($request);
}
Когда я пытаюсь:
setCartWasUpdated(false)
Он перенаправляет на страницу подтверждения, как я хочу, но цена quote_item по-прежнему равна 0.
Система> Конфигурация> Продажи> Оформить заказ> После добавления товара для перенаправления в корзину установлено значение
Вопрос:
Я много раз искал ту же проблему в Google, но мне не удалось заархивировать свою цель.
Может быть, я что-то здесь упускаю, любое предложение будет оценено.
Спасибо, что прочитали мою проблему.