Ini seharusnya berfungsi untuk saat ini, tetapi segera, loadmetode ini akan hilang dan Anda perlu menggunakan kontrak layanan.
Jadi bisa digunakan \Magento\Quote\Api\CartRepositoryInterface.
Sama seperti di atas, masukkan instance kelas ini di kelas Anda:
\Magento\Quote\Model\Quoteadalah kelas yang tidak dapat disuntikkan. Maksud saya Anda bisa menyuntikkannya, tetapi itu bukan ide terbaik untuk melakukannya. Jika Anda menyuntikkan kelas ini dalam 2 kelas lain, Anda akan mendapatkannya sebagai singleton dalam wadah DI dan jika Anda memanggil loadsatu kali di salah satu kelas, Anda akan memilikinya "dimuat" di kelas Anda yang lain juga. Kemungkinan besar Anda tidak menginginkannya. Gunakan pabrik sebagai gantinya.
Marius
@Marius inilah yang terjadi ketika Anda mengerjakan proyek M1 dan M2 secara bersamaan. Anda cenderung mencampur semuanya. Terima kasih atas pencerahan dan +1 untuk solusi Anda, jelas cara yang tepat untuk pergi dengan kontrak layanan
Raphael di Digital Pianism
Alih-alih $this->_objectManager->get('Magento\Quote\Model\QuoteFactory')->create()->loadByIdWithoutStore($quoteId);Anda dapat menggunakan $this->_objectManager->create('Magento\Quote\Model\Quote')->loadByIdWithoutStore($quoteId);Untuk alasan yang sama disebutkan di atas. memanggil getOM akan menghasilkan singleton.
Marius
@Marius Saya menemukan bahwa getvs createlebih jelas daripada penggunaan lajang M1 tapi saya masih cenderung menyalahgunakan mereka
Raphael di Digital Pianism
Jangan khawatir. Pernah ke sana, melakukan itu. :)
Pertama, Anda perlu menyuntikkan
\Magento\Quote\Model\QuoteFactory
konstruktor kelas Anda:Kemudian di kelas Anda, Anda dapat melakukan:
Di samping catatan Anda juga dapat menggunakan metode berikut untuk memuat penawaran:
loadActive($quoteId)
di mana ia memuat kuotasi aktif yang sesuai (di manais_active
= 1)loadByCustomerId($customerId)
di mana ia memuat kutipan aktif yang sesuai dengan id pelanggan.NB: Anda juga bisa menggunakan object manager secara langsung untuk melakukannya tetapi tidak disarankan :
sumber
\Magento\Quote\Model\Quote
adalah kelas yang tidak dapat disuntikkan. Maksud saya Anda bisa menyuntikkannya, tetapi itu bukan ide terbaik untuk melakukannya. Jika Anda menyuntikkan kelas ini dalam 2 kelas lain, Anda akan mendapatkannya sebagai singleton dalam wadah DI dan jika Anda memanggilload
satu kali di salah satu kelas, Anda akan memilikinya "dimuat" di kelas Anda yang lain juga. Kemungkinan besar Anda tidak menginginkannya. Gunakan pabrik sebagai gantinya.$this->_objectManager->get('Magento\Quote\Model\QuoteFactory')->create()->loadByIdWithoutStore($quoteId);
Anda dapat menggunakan$this->_objectManager->create('Magento\Quote\Model\Quote')->loadByIdWithoutStore($quoteId);
Untuk alasan yang sama disebutkan di atas. memanggilget
OM akan menghasilkan singleton.get
vscreate
lebih jelas daripada penggunaan lajang M1 tapi saya masih cenderung menyalahgunakan mereka