Bagaimana cara mendapatkan nilai opsi berdasarkan id opsi di Magento, atau mendapatkan id opsi berdasarkan kode opsi?
Contoh: bagaimana cara mendapatkan opsi atribut warna id 10 dari label "Merah", dan mendapatkan nilai "Merah" jika id opsi adalah 10?
magento2
product-attribute
Arnaud
sumber
sumber
Praktik terbaik di Magento adalah melakukannya melalui xml.
Untuk mendapatkan atribut standar seperti
brand
Anda melakukan sesuatu seperti inicatalog_product_view.xml
misalnya:Ini akan mendapatkan nilai atribut input atau textarea. Jika Anda memiliki dropdown, Anda harus menggunakan jenis teks, jadi tambahkan baris ini dalam daftar argumen:
Tidak perlu membuat file atau menulis kode php apa pun untuk mendapatkan atribut. Dengan cara ini Anda akan memiliki konsistensi dan menggunakan file atribut.phtml yang sama untuk semua atribut. Jika ada perubahan, Anda perlu mengubahnya di satu tempat saja.
sumber
Bekerja untukku
sumber
Gunakan Metode Pabrik
dalam file phtml
sumber
saya mendapatkan solusi sederhana. ini hanya akan menampilkan nilai atribut dengan kode atribut untuk suatu produk. Saya telah memeriksa halaman katalog dan detail.
kodenya
<?php echo $_product->getAttributeText('size'); ?>
di sini ukuran adalah nama atribut.
referensi: vendor / magento / modul-katalog / view / frontend / templates / produk / view / attribute.phtml baris: 35
sumber
$product->getResource()
memiliki catatan DocBlock tentang menjadi usang setidaknya di v2.2.2 dan jadi saya ragu untuk menggunakannya. Datang dengan solusi ini dan bukannya terinspirasi dari yang sudah ada di halaman ini:Untuk referensi, ini adalah metode di AbstractModel.php
sumber
getResource()
metode dalam model ini: github.com/magento/magento2/blob/2.3-develop/app/code/Magento/…getResource()
adalah metode yang sebelumnya ada. Dalam v2.2.2 seperti yang saya sebutkan itu sudah dijadwalkan untuk penghinaan. Di cabang 2,3-berkembang saya menduga itu telah selesai. Demikian contoh saya yang tidak membutuhkan fungsi itu.Karena semua orang datang ke sini.
Jika Anda tidak memiliki entitas produk apa pun, Anda dapat mengambil nilai opsi dengan langkah-langkah ini.
Suntikkan
\Magento\Eav\Api\AttributeRepositoryInterface
ke kelas AndaGunakan repo untuk mendapatkan instance atribut
Gunakan
$attribute
untuk mendapatkan id opsi dari nilai opsisumber
Anda dapat menggunakan untuk mendapatkan label atribut
Anda bisa menggunakan manajer objek:
sumber
Silakan coba kode ini
Langkah 1) Pertama, Anda harus memuat produk
Langkah 2) Di halaman daftar produk, akan ada loop foreach untuk daftar produk seperti ini
Langkah 3) Kode Anda akan berada di dalam loop ini. Tempatkan kode di bawah ini di tempat di mana Anda ingin menampilkan label atribut.
Cukup ganti your_attribute_code Anda dengan apa pun nama atribut Anda.
sumber