Jak mogę uzyskać wartości opcji atrybutów encji eav?
Znalazłem rozwiązanie tylko dla Magento 1.x, ale M2 nie wiem.
M1:
$attr = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('specialty')->getData()[0];
$attributeModel = Mage::getModel('eav/entity_attribute')->load($attr['attribute_id']);
$src = $attributeModel->getSource()->getAllOptions();
Ktoś wie, pokaż mi krok po kroku, proszę! Dzięki!
\Magento\Eav\Api\Attribute RepositoryInterface
. Wszystko, co nie jest oznaczone jako @api traktowane jako prywatne i może być usunięte w mniejszych wersjach.Możesz to zrobić po prostu wywołać poniższy kod w pliku bloku.
Zadzwoń do pliku phtml,
Dzięki.
źródło
swatch
danych wejściowych, takich jakcolor
.getOptions()
Metoda jest zakodowana do pewnych typów danych wejściowych, jak „rozwijanego menu”, więc pomija opcje wprowadzania próbek. Tylko jedna głowa, jeśli ktoś do tego podejdzie.Użyj następującego kodu, aby uzyskać wszystkie opcje atrybutów.
Czy możesz kliknąć tutaj, aby uzyskać bardziej szczegółowe wyjaśnienia. http://www.pearlbells.co.uk/code-snippets/get-magento-attribute-options-programmatically/
źródło
Używam warstwy usługi
Magento\Eav\Api\AttributeRepositoryInterface
interfejsu API sugerowanej przez @kandy w komentarzach do odpowiedzi @marius.Wstrzyknij element danych usługi do konstruktora w następujący sposób.
I możesz uzyskać ten atrybut za pomocą tego.
Aby uzyskać tablicę wartości opcji atrybutów, użyj tego.
źródło
Wstaw instancję do
\Magento\Catalog\Model\Product\Attribute\Repository
swojego konstruktora (w bloku, klasie pomocniczej lub gdziekolwiek):Następnie utwórz metodę w swojej klasie, aby uzyskać atrybut według kodu:
Następnie możesz wywołać tę metodę w taki sposób, np. W pliku .phtml
Następnie możesz wykonywać wywołania na obiekcie atrybutu, np
$attribute->getOptions()
$attrTest->getFrontendLabels()
echo '> ' . print_r($attrTest->debug(), true);
źródło
źródło