Saya memiliki kelas berikut yang saya gunakan untuk menguji menambahkan ke troli dengan cara kustom;
use Magento\Framework\App\Action;
use Magento\Checkout\Model\Cart;
class Add extends Action\Action
{
protected $cart;
public function __construct(
Action\Context $context,
Cart $cart
){
$this->cart = $cart;
parent::__construct($context);
}
public function execute()
{
$this->cart->addProductsByIds([1])
->save();
}
}
Ini sangat bagus. Ketika Anda melihat keranjang itu menunjukkan barang saya, semua terlihat keren di database dll. Namun, minicart masih menunjukkan seolah-olah tidak ada barang di keranjang.
Jika saya kemudian menambahkan produk lain ke troli menggunakan tombol "tambahkan ke troli" pada produk atau daftar halaman itu menambah ke troli dan memperbarui minicart untuk menampilkan kedua item.
Di mana itu memicu minicart untuk memperbarui sendiri atau bagaimana minicart tahu perlu memperbarui?
Ini tidak terkait langsung dengan pertanyaan, tetapi jika Anda memperbarui keranjang melalui panggilan AJAX dalam
require.js
file Magento normal , Anda dapat memintaMagento_Customer/js/customer-data
objek dan meminta minicart untuk menyegarkan dengan cara ini, juga:Sumber: https://github.com/magento/magento2/issues/5621
sumber
customerData.invalidate(sections);
dan kemudian Magento bisa melakukan sisanya.Di etalase jika Anda menyelam di sumber di area minicart
Seperti yang Anda lihat di sini, magento2 menjalankan komponen di dalam tag skrip dan data ikatan dinamis untuk memblokir minicart menggunakan knockoutJs
Sesuatu yang menarik saya temukan
Dari tata letak Checkout. Ini menentukan
component
untuk minicart-konten untuk mendapatkan data Lanjutkan melihatMagento_Checkout/js/view/minicart
Anda akan melihatsumber