Saya mencoba kode berikut untuk mendapatkan ID dari semua produk sederhana yang merupakan anak-anak $collection
, yang saya tahu merupakan kumpulan produk yang dapat dikonfigurasi.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
print_r($_children);
}
Namun, semua array yang saya dapatkan kosong. Apakah saya melakukan sesuatu yang salah?
magento2
magento-2.0
simple-product
b_pcakes
sumber
sumber
$_children = $_product->getTypeInstance()->getUsedProducts($_product);
Lihat jika Anda mendapatkan sesuatu.getUsedProductCollection
Jawaban:
Anda dapat mencetak id produk anak Anda (produk yang dapat dikonfigurasi) melalui membuat sedikit perubahan pada kode Anda sebagai berikut
Setelah ini lihat ke file log Anda dan Anda akan memiliki IDS anak Anda.
sumber
Jawaban atas pertanyaan ini salah. Meskipun implementasinya mungkin berhasil, itu bukan cara yang tepat untuk menangani ini. Cara yang benar untuk melakukan ini adalah dengan menggunakan kontrak layanan dan model data Magentos.
Dalam hal ini, ini adalah
Magento\ConfigurableProduct\Api\LinkManagementInterface
kontrak Layanan yang Anda butuhkan.Contoh kecil kode yang saya gunakan dalam perintah konsol:
Magento 2 tidak terlalu konsisten dengan kode itu sendiri karena sebagian besar kode porting dari Magento 1. Itu sebabnya Anda masih melihat sisa-sisa model berbasis warisan dan metode mereka (seperti
getTypeInstance()
). Jika Anda ingin membuat kode Magento 2 yang tahan di masa depan, gunakan kontrak layanan dan model data sebanyak mungkin.sumber
Anda bisa memanggil metode di bawah ini,
Di atas
$getChildId
tampilkan semua id Produk sederhana.sumber
Cara lain untuk mencapai ini adalah dengan menggunakan metode getChildrenIds.
$ children = $ cProductTypeInstance-> getChildrenIds ($ this-> currentProductObj-> getId ());
sumber
Untuk mendapatkan objek produk anak yang sebenarnya (bukan hanya rangkaian ID mereka) gunakan ini:
Untuk mendapatkan ID atau properti lainnya, gunakan yang di atas dengan lingkaran:
sumber