Estoy tratando de actualizar el elemento de presupuesto en magento2. Pero cada vez que guardo el elemento, crea un nuevo elemento con el mismo ID de presupuesto en lugar de actualizarlo. Aqui esta mi codigo
public function __construct(
\Magento\Quote\Model\QuoteRepository $quoteRepo
){
$this->_quoteRepo = $quoteRepo;
}
public function updateItem(){
$quote = $this->_quoteRepo->get('id here');
foreach($quote->getAllVisibleItems() as $itemq){
$itemq->setQty(5);
$itemq->setPrice(20);
$itemq->save();
}
}
Pero cada vez que se guarda un elemento ... se genera un nuevo elemento. No sé por qué También I couldn't find any class which explicitly load qoute item in magento2
. La ayuda será apreciada.
En esta pregunta /magento/139298/how-to-save-quote-items-in-magento-2
, están configurando todo el producto ... no tratando de actualizarlo. Cuando configura un producto, seguramente generará un nuevo artículo de presupuesto. Pero por qué está haciendo lo mismo en caso de actualización.
Respuestas:
No estoy seguro de mi solución a continuación:
fuente
La funcionalidad por la que está preguntando ya está hecha y
Magento\Checkout\Controller\Cart\UpdatePost
se ejecuta cuando actualizamos el carrito en la página del carrito de magento. Ejecuta laupdateItems()
función deMagento\Checkout\Model\Cart
actualizar elementos en laquote_item
tabla. Toma el parámetro en forma de matriz$data ['item id of product']['attribute you want to update']
.Por lo tanto, puede llamar
updateItems()
al objeto del modelo de carro y pasar los datos en consecuencia para actualizar los artículos. Además, si no obtiene la identificación del artículo, puede obtenerlo$this->cart->getQuote()->getAllItems()
y luego llamargetItemId()
a cada artículo.fuente