【问题标题】:Magento 2.3 add product to quote programmatically, price not showingMagento 2.3 以编程方式添加产品报价,价格未显示
【发布时间】:2019-08-15 07:47:14
【问题描述】:
我目前正在尝试使用此代码将产品添加到我的购物车。
$quote = $this->_session->getQuote();
$quote->addProduct($product);
$this->_cartRepository->save($quote);
当我在新会话中执行此操作时,产品价格和小计显示为 0.00,但在摘要中小计和订单总计是正确的。
编辑产品数量后,价格都正常运行。
我曾尝试使用$quote->collectTotals();,但这并没有带来明显的变化。
如何更新购物车,以便在我打开购物车页面时显示产品价格?
【问题讨论】:
标签:
php
magento
magento2
shopping-cart
magento-2.3
【解决方案1】:
试试这个代码:
use Magento\Checkout\Model\Cart as Quote;
class Add {
protected $quote = null;
public function __construct( Quote $quote){
$this->quote = $quote;
}
public function test(\Magento\Catalog\Model\Product $product){
$options = ['qty'=> 1];
$this->quote->addProduct($product, $options);
//OR $this->quote->addProductsByIds([$product->getId()]);
$this->quote->save();
}
}
或者
public function test(\Magento\Catalog\Model\Product $product){
$quote = $this->_objectManager->get(\Magento\Checkout\Model\Cart:class);
$options = ['qty'=> 1];
$quote->addProduct($product, $options);
//OR $quote->addProductsByIds([$product->getId()]);
$quote->save();
}
【解决方案2】:
您需要从数据库重新加载报价,以使所有 collectTotals 标志都为空。
/** @var \Magento\Quote\Api\CartRepositoryInterface $quoteRepository */
$quoteRepository->get($quoteId);
$quote->addProduct($product, $request);
$quote->collectTotals()->save();
见Magento\Quote\Model\Quote::collectTotals和Magento\Quote\Model\Quote\Address\Total\Subtotal::collect