1
มีเหตุการณ์หรือจุดปลั๊กอินเมื่อกฎรถเข็นไม่ถูกต้องอีกต่อไปหรือไม่
มีเหตุการณ์หรือสถานที่ที่ฉันสามารถเสริมได้หรือไม่เมื่อกฎราคาตะกร้าสินค้าไม่ถูกต้องอีกต่อไป (เช่นเมื่อหมดอายุหรือหากคุณเปลี่ยนปริมาณของผลิตภัณฑ์อื่นที่ไม่ใช้แล้ว) ฉันรู้ว่ามันถูกลบออกจากรถเข็นโดยอัตโนมัติ แต่ฉันไม่สามารถหาสถานที่ที่เกิดขึ้นในรหัสได้ ฉันกำลังเขียนโมดูลที่เพิ่มผลิตภัณฑ์ฟรีลงในรถเข็นสำหรับคูปองที่ผลรวมย่อยมากกว่าจำนวน X มันทำงานได้ทั้งหมดยกเว้นเมื่อลดปริมาณสินค้าในรถเข็นที่ผลรวมย่อยต่ำกว่า X คูปองถูกลบ แต่สินค้าของฉันยังคงอยู่ในรถเข็น จนถึงตอนนี้ฉันได้แตะที่กิจกรรมต่อไปนี้เพื่อทำสิ่งที่ฉันต้องการจนถึงตอนนี้ ... salesrule_validator_process checkout_cart_update_items_after sales_quote_collect_totals_before ฉันพบว่าสิ่งMagento\Quote\Model\CouponManagementที่ดูเหมือนจะมีความน่าเชื่อถือเนื่องจากมันมีset()และremove()วิธีการ แต่พวกเขาดูเหมือนจะไม่ได้รับการเรียกเมื่อมีการปรับปรุงรถเข็น ในcheckout_cart_update_items_afterมันดูเหมือนว่าสถานที่ตรรกะฉันสามารถตรวจสอบได้ แต่ดูเหมือนว่ากฎยังคงตั้งตาม$cart->getQuote()->getAppliedRuleIds() UPDATE: ฉันลงเอยด้วยการเพิ่มผู้สังเกตการณ์สำหรับcheckout_cart_save_afterเหตุการณ์ที่ทำงานหลังจากcollectTotals()นั้นดังนั้นจึงรู้ว่ากฎยังคงอยู่ในรถเข็นหรือไม่ แล้วฉันเป็นพื้นเปรียบเทียบ$quote->getAppliedRuleIds()กับ$quote->getOrigData('applied_rule_ids')เพื่อดูว่ากฎได้ถูกลบออก ฉันรู้สึกว่ามีวิธีที่ดีกว่าในการทำเช่นนี้ แต่ใช้งานได้ในขณะนี้ ฉันยังมีปัญหากับคูปองที่หมดอายุแม้ว่า ...