Wie erhalte ich einen Optionswert basierend auf der Options-ID in Magento oder erhalte eine Options-ID basierend auf dem Optionscode?
Beispiel: Wie erhält man die Farbattribut-Options-ID 10 von der Bezeichnung "Rot" und den Wert "Rot", wenn die Options-ID 10 ist?
magento2
product-attribute
Arnaud
quelle
quelle
Best Practice in Magento ist es, dies über XML zu tun.
Um ein Standardattribut
brand
wie dieses zu erhalten, führen Siecatalog_product_view.xml
zum Beispiel Folgendes aus:Dadurch wird der Wert eines Eingabeattributs oder eines Textbereichs abgerufen. Wenn Sie eine Dropdown-Liste haben, sollten Sie den Texttyp verwenden, also fügen Sie diese Zeile in die Liste der Argumente ein:
Keine Notwendigkeit, Dateien zu erstellen oder PHP-Code zu schreiben, um ein Attribut zu erhalten. Auf diese Weise haben Sie Konsistenz und verwenden für alle Attribute dieselbe Datei attribute.phtml. Wenn sich etwas ändert, müssen Sie es nur an einer Stelle ändern.
quelle
Hat für mich gearbeitet
quelle
Verwenden Sie die Factory-Methode
in der HTML-Datei
quelle
Ich bekomme eine einfache Lösung. Dadurch wird nur der Attributwert mit dem Attributcode für ein Produkt angezeigt. Ich habe die Katalog- und Detailseite eingecheckt.
der Code ist
<?php echo $_product->getAttributeText('size'); ?>
Hier ist Größe der Attributname.
referenz: anbieter / magento / modulkatalog / ansicht / frontend / vorlagen / produkt / ansicht / attribute.phtml zeile: 35
quelle
$product->getResource()
hat einen DocBlock-Hinweis, dass er mindestens in Version 2.2.2 veraltet ist, und deshalb habe ich gezögert, ihn zu verwenden. Kam mit dieser Lösung stattdessen inspiriert von denen, die bereits auf dieser Seite:Als Referenz ist dies die Methode in AbstractModel.php
quelle
getResource()
in diesem Modell nicht einmal die Methode finden : github.com/magento/magento2/blob/2.3-develop/app/code/Magento/…getResource()
war eine Methode, die vorher existierte. In v2.2.2 war es, wie ich bereits erwähnte, bereits für die Verfallserklärung vorgesehen. Ich vermute, dass der 2.3-Entwicklungszweig abgeschlossen wurde. Also mein Beispiel das diese Funktion nicht benötigt.Denn hier kommt jeder her.
Wenn Sie keine Produktentität haben, können Sie mit diesen Schritten einen Optionswert abrufen.
Injizieren Sie
\Magento\Eav\Api\AttributeRepositoryInterface
in Ihre KlasseVerwenden Sie das Repo, um die Attributinstanz abzurufen
Verwenden Sie
$attribute
, um die Options-ID aus dem Optionswert abzurufenquelle
Sie können zum Abrufen der Attributbezeichnung verwenden
Sie können den Objektmanager verwenden:
quelle
Bitte versuchen Sie diesen Code
Schritt 1) Zuerst müssen Sie die Produkte laden
Schritt 2) Auf der Produktlistenseite gibt es eine foreach-Schleife, um die Produkte wie diese aufzulisten
Schritt 3) Ihr Code befindet sich in dieser Schleife. Platzieren Sie den folgenden Code an einer beliebigen Stelle, an der Sie die Attributbezeichnung anzeigen möchten.
Ersetzen Sie einfach Ihren_attribute_code durch den Namen Ihres Attributs.
quelle