Seçili çoklu seçim özelliğinin değerini al


14

Şu "araba" ürününü alın: Volkswagen Golf .

car_optionsAşağıdaki olası seçeneklere ve kimliklerine sahip bir çoklu seçim özelliğine sahiptir:

  • Airco (id = 123) seçildi
  • Radyo (id = 124) seçildi
  • Bluetooth (kimlik = 125)
  • Gezinme (id = 126)

Bu ürün için Radyo ve Airco seçilmiştir. Bu iki değeri (radyo, airco) nasıl alabilir ve görüntüleyebilirim? $ _product verilir.

Yanıtlar:


19

Bunu dene:

echo $_product->getResource()->getAttribute('car_options')->getFrontend()->getValue($_product);

Çıktı almıyorum! Bu bir açılır liste değil, çok seçmeli bir özelliktir!
SPRBRN

Hala bir çoklu seçimle çalışmalı, sadece kendim denedim. var_dump($_product->getData('car_options');Çıkışı kontrol etmeyi deneyin . Bu virgülle ayrılmış bir dize olmalıdır, eğer değilse o zaman sadece bir 3. parti modülünün müdahale ettiğini hayal edebilirim.
Mayers

Hala çıktı yok. Birkaç modül kullanıyoruz, ancak niteliklerle uğraşan hiçbir şey bilmiyorum.
SPRBRN

Eğer $_product->getData('car_options')döner NULL, bunun ürününüzün koleksiyonuna eklenmez demektir. Bu özelliğe nereden erişmeye çalıştığınız hakkında daha fazla bilgi sahibi olmamız gerekecek
Mayers

Bir çözüm buldum - cevabımı görün.
SPRBRN

2
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ product = $ objectManager-> get ('Magento \ Katalog \ Model \ Ürün') -> yükle ($ product_id);

$ attributevalues ​​= $ product-> getResource () -> getAttributeRawValue ($ product_id, 'my_custom_attribute_code', $ mağaza kimliği);

işe yarıyor .. Umarım size yardımcı olur ..


Harika ... Bir cazibe gibi çalışır !!!!!
Sneha Panchal

glad to know :) @SnehaPanchal
Sameer Bhayani

0

Aşağıdaki kod

  1. bu ürün için seçilen seçeneklerin değer kimliklerini döndürür: 123,124
  2. bunu bir diziye dönüştürür: dizi (123,124)
  3. sonra bu seçeneklerin etiketini bulur: 123 => Airco ve 124 => Radyo
  4. ve bir metin dizesindeki değerleri döndürür: Airco, Radio
$ _attribute_code = 'car_options';
$ car_options_csv = Mage :: getResourceModel ('katalog / ürün') -> getAttributeRawValue ($ productId, $ _attribute_code, $ storeId); // döndürür: 123,124
$ car_options = patlayabilir (',', $ car_options_csv);
$ attributeId = Mage :: getResourceModel ('eav / entity_attribute') -> getIdByCode ('catalog_product', $ _ attribute_code);
$ attribute = Mage :: getModel ('katalog / resource_eav_attribute') -> yükle ($ attributeId);
$ attributeOptions = $ özellik -> getSource () -> getAllOptions ();

$ res = '';
foreach ($ attributeOptions $ a olarak)
{
    $ l = $ a ['etiket'];
    $ m = $ a ['değer'];
    if (strlen (trim ($ l))> 0 && in_array ($ m, $ car_options))
    {
        $ res. = kırpma ($ l). ',';
    }
}
echo substr ($ res, 0, -2) ;;

Ah - genellikle o yoldan gitmek istemezsiniz. Özellikle Mayer'in yukarıdaki cevabı iyi çalışıyor. Ayrıca Magento'nun çeviri sistemini bu şekilde atlayıp atlamadığınızdan emin değilim - yine de kontrol etmedim.
iş akışı

0

Teşekkürler @Mayers, çözümü yerel getAttributeText'i geçersiz kılmak için çok iyi:

 public function getAttributeText($attributeCode)  
 {
    return $this->getResource()
        ->getAttribute($attributeCode)
        ->getFrontend()
        ->getValue($this);
 }

müşteri modeline de katmak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.