Jak uzyskać wartość opcji na podstawie identyfikatora opcji w Magento lub uzyskać identyfikator opcji na podstawie kodu opcji?
Przykład: jak uzyskać identyfikator atrybutu koloru id 10 z etykiety „Czerwony” i uzyskać wartość „Czerwony”, jeśli identyfikator opcji to 10?
magento2
product-attribute
Arnaud
źródło
źródło
Najlepszą praktyką w Magento jest robienie tego za pomocą xml.
Aby uzyskać standardowy atrybut taki jak
brand
robisz coś takiegocatalog_product_view.xml
na przykład:Otrzyma wartość atrybutu wejściowego lub pola tekstowego. Jeśli masz listę rozwijaną, powinieneś użyć typu tekstu, więc dodaj ten wiersz na liście argumentów:
Nie trzeba tworzyć plików ani pisać kodu php, aby uzyskać atrybut. W ten sposób uzyskasz spójność i użyjesz tego samego pliku attribute.phtml dla wszystkich atrybutów. Jeśli coś się zmienia, musisz to zmienić tylko w jednym miejscu.
źródło
Pracował dla mnie
źródło
dostaję proste rozwiązanie. pokaże to tylko wartość atrybutu z kodem atrybutu dla produktu. sprawdziłem na stronie katalogu i szczegółów.
kod jest
<?php echo $_product->getAttributeText('size'); ?>
tutaj rozmiar jest nazwą atrybutu.
referencja: sprzedawca / magento / moduł-katalog / widok / interfejs / szablony / produkt / widok / atrybut.phtml wiersz: 35
źródło
Użyj metody fabrycznej
w pliku phtml
źródło
$product->getResource()
ma notatkę DocBlock o tym, że jest przestarzała przynajmniej w wersji 2.2.2, więc wahałem się przed użyciem kodu. Wymyśliliśmy to rozwiązanie, inspirowane tymi, które są już na tej stronie:Dla porównania jest to metoda z AbstractModel.php
źródło
getResource()
metody w tym modelu: github.com/magento/magento2/blob/2.3-develop/app/code/Magento/…getResource()
była metodą, która wcześniej istniała. W wersji 2.2.2, jak wspomniałem, było już przeznaczone na wycofanie. Podejrzewam, że w gałęzi 2.3 rozwijającej się został ukończony. Zatem mój przykład, który nie wymaga tej funkcji.Wszyscy tu przychodzą.
Jeśli nie masz żadnej jednostki produktu, możesz pobrać wartość opcji, wykonując te czynności.
Wstrzyknąć
\Magento\Eav\Api\AttributeRepositoryInterface
do swojej klasyUżyj repozytorium, aby uzyskać instancję atrybutu
Użyj,
$attribute
aby uzyskać identyfikator opcji z wartości opcjiźródło
możesz użyć do uzyskania etykiety atrybutu
możesz użyć menedżera obiektów:
źródło
Spróbuj tego kodu
Krok 1) Najpierw musisz załadować produkty
Krok 2) Na stronie z listą produktów pojawi się pętla foreach do umieszczenia na liście takich produktów
Krok 3) Twój kod będzie w tej pętli. Umieść poniższy kod w miejscu, w którym chcesz wyświetlić etykietę atrybutu.
Po prostu zamień swój kod_atrybutu na dowolną nazwę atrybutu.
źródło