【问题标题】: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::collectTotalsMagento\Quote\Model\Quote\Address\Total\Subtotal::collect

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-23
        • 2018-05-06
        相关资源
        最近更新 更多