Rumah > Soal Jawab > teks badan
P粉7104549102023-09-02 14:33:53
Cari jika diskaun telah ditambahkan pada troli dengan pengecam rujukan. Jika ya, hanya alih keluar contoh lama daripada troli anda dan tambahkan diskaun yang dikira semula.
if ($original->has($discountLineItem->getId())) { $original->get($discountLineItem->getId())->setRemovable(true); $original->remove($discountLineItem->getId()); return; } // $discountLineItem->getType() should equal LineItem::DISCOUNT_LINE_ITEM $toCalculate->add($discountLineItem);
Selain itu, anda juga mesti memastikan bahawa pemproses anda dilaksanakan selepas Shopware sendiri PromotionProcessor
, jika tidak ia akan cuba menambah semula diskaun yang anda tambahkan secara manual sebelum ini.
<service id="MyPlugin\Cart\CustomPromotionProcessor"> <!-- ... inject after default discount cart processor (3700) --> <tag name="shopware.cart.processor" priority="3600"/> </service>
Saya mencipta contoh pemalam yang mengandungi semua perubahan dalam panduan yang diperlukan untuk mengira semula. Dalam calon keluaran semasa 6.5
上进行了测试,但也应该适用于最新版本的 6.4
.
Contoh ini adalah berdasarkan diskaun sebagai peratusan nilai troli. Jika diskaun sepatutnya menjadi nilai mutlak perubahan, prosesnya sedikit berbeza. Saya membuat garpu dalam repositori di atas dan memberikan contoh.