Bagaimana cara mendapatkan atribut "label opsi / teks atribut" yang memiliki "nilai atribut" (option_id)?

18

Misalkan saya memiliki atribut yang merupakan kumpulan opsi (dropdown / multiselect).

Saya dapat mengambil nilai atribut untuk produk yang diberikan:

$store_id = [something];
$productId = [something];
// this is a select/multiselect
$attribute_code = [something]; 

$option_id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, $attribute_code, $store_id );
$option_label = ???

Sekarang, saya mendapat atribut option_id yang merupakan nilai numerik ...

... Apa cara terbaik untuk memuat label atribut frontend untuk nilai atribut saya? (tanpa memuat produk lengkap)

Solusi terima kasih, Marius :

// Not loading the product - just creating a simple instance
$product = Mage::getModel('catalog/product')
->setStoreId($store_id)
->setData($attribute_code,$option_id); 
$option_label = $product->getAttributeText($attribute_code);
Fra
sumber
2
Mengapa pertanyaan ini diberikan beberapa kali oleh penulis yang tepat dan semuanya membingungkan pengguna. Bisakah kita menandai sebagai duplikat seperti pertanyaan ini tanpa jawaban yang benar? Ini magento.stackexchange.com/questions/3003 pertanyaan yang diberikan oleh penulis adalah tidak ada jawaban yang benar, tapi mengapa upvotes (dan diberikan jawaban sendiri)! Ini magento.stackexchange.com/questions/976 juga sama. Mungkin permintaan saya tidak benar, tetapi satu pertanyaan, satu penulis dan tidak ada jawaban. Tolong, jaga kualitas situs. Terima kasih.
mageUz
Saya telah memperbaiki pertanyaan lain dengan menambahkan solusi @Marius magento.stackexchange.com/questions/3003/…
Fra
1
Perhatikan bahwa setidaknya di Magento CE 1.9 dan EE 1.14 dan di bawahnya, getAttributeText('value')tidak berfungsi dengan benar jika metode atribut getAllOptions()mengembalikan opsi yang diatur dengan array bersarang, (dinyatakan sebagai <optgroup>dalam dropdown.)
Tyler V.

Jawaban:

49

Selain kode Anda cantumkan:

$product = Mage::getModel('catalog/product')
                ->setStoreId($store_id)
                ->setBrand($brand_value); // not loading the product - just creating a simple instance
$brandLabel = $product->getAttributeText('brand');
Marius
sumber
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
sumber
1
Saya bingung untuk "label atribut frontend", mohon perbaiki pertanyaannya. Bukan "label atribut", ini "label opsi" atau "teks atribut"
mageUz