Magento 2: การอัพเดทไอเท็มคำพูด


10

ฉันกำลังพยายามอัพเดทรายการคำพูดใน magento2 แต่ทุกครั้งที่ฉันบันทึกรายการมันจะสร้างรายการใหม่ที่มีรหัสคำพูดเดียวกันมากกว่าที่จะอัพเดท นี่คือรหัสของฉัน

    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();
    }
 }

แต่ทุกครั้งที่มีการบันทึกรายการ .. รายการใหม่จะถูกสร้างขึ้น ไม่รู้ทำไม I couldn't find any class which explicitly load qoute item in magento2ด้วย ความช่วยเหลือจะได้รับการชื่นชม

ในคำถามนี้/magento/139298/how-to-save-quote-items-in-magento-2พวกเขากำลังตั้งค่าผลิตภัณฑ์ทั้งหมด ... ไม่พยายามอัปเดต เมื่อคุณตั้งค่าผลิตภัณฑ์ใบเสนอราคาใหม่จะสร้างขึ้นอย่างแน่นอน แต่ทำไมมันถึงทำแบบเดียวกันในกรณีที่มีการอัพเดท



1
ไม่เหมือนกัน. ฉันได้แก้ไขคำถามของฉัน @AnkitShah โปรดตรวจสอบ
Kingshuk Deb

สำหรับ Magento 2.2+ โปรดอ้างอิงสิ่งนี้ - magento.stackexchange.com/a/182152/4492
Rohan Patil

คำตอบ:


16

ฉันไม่แน่ใจเกี่ยวกับวิธีแก้ปัญหาด้านล่างของฉัน:

  • อาจเป็นเพราะคุณต้องโหลด วัตถุใบเสนอราคาโดยใช้รหัสรายการ
  • ตามที่คุณต้องการตั้งราคาแล้วใช้setPrice ()คุณไม่สามารถกำหนดราคาที่คุณต้องการสำหรับรายการในรถเข็น
$item = $quote->getItemById($item->getId());
if (!$item) {
  continue;
}
$item->setQty((double) $qty);
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
$item->getProduct()->setIsSuperMode(true);
$item->save(); 

1
วิธีอัปเดตตัวเลือกเพิ่มเติม
sivakumar

สวัสดี @ ยอมรับวิธีการอัปเดตภาษีจำนวนเงินสำหรับรายการเราสามารถกำหนดจำนวนภาษีที่กำหนดเองสำหรับรายการเสนอราคาแต่ละรายการได้หรือไม่
jafar pinjar

2

ฟังก์ชั่นที่คุณถามเกี่ยวกับได้ทำไปแล้วMagento\Checkout\Controller\Cart\UpdatePost ซึ่งจะถูกดำเนินการเมื่อเราอัปเดตรถเข็นบนหน้าตะกร้าของวีโอไอพี มันทำงานupdateItems()ฟังก์ชั่นของMagento\Checkout\Model\Cartการปรับปรุงรายการในquote_itemตาราง $data ['item id of product']['attribute you want to update']มันใช้พารามิเตอร์ในรูปแบบของอาร์เรย์

ดังนั้นคุณสามารถโทรหา updateItems()วัตถุโมเดลรถเข็นและส่งผ่านข้อมูลตามลำดับเพื่ออัปเดตรายการนอกจากนี้หากคุณไม่ได้รับรหัสไอเท็มคุณจะได้รับเหมือน$this->cart->getQuote()->getAllItems()และจากนั้นโทรหาgetItemId()แต่ละรายการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.