Как получить значение опции на основе идентификатора опции в Magento или получить идентификатор опции на основе кода опции?
Пример: как получить идентификатор опции атрибута цвета 10 из метки «Красный» и получить значение «Красный», если идентификатор опции равен 10?
magento2
product-attribute
Arnaud
источник
источник
Лучшая практика в magento - это делать через xml.
Чтобы получить стандартный атрибут, например,
brand
вы делаете что-то вроде этого,catalog_product_view.xml
например:Это получит значение входного атрибута или текстовой области. Если у вас есть выпадающий список, вы должны использовать текстовый тип, поэтому добавьте эту строку в список аргументов:
Нет необходимости создавать файлы или писать код php, чтобы получить атрибут. Таким образом вы получите согласованность и будете использовать один и тот же файл attribute.phtml для всех атрибутов. Если что-то меняется, вам нужно изменить это только в одном месте.
источник
Работал для меня
источник
я получаю простое решение. это покажет только значение атрибута с кодом атрибута для продукта. Я проверил на странице каталога и деталей.
код
<?php echo $_product->getAttributeText('size'); ?>
здесь размер - это имя атрибута.
ссылка: поставщик / magento / модуль-каталог / view / внешний интерфейс / шаблоны / product / view / attribute.phtml строка: 35
источник
Использовать фабричный метод
в файле phtml
источник
$product->getResource()
есть примечание DocBlock о том, что он устарел, по крайней мере, в v2.2.2, и поэтому я не решался его использовать. Придумал это решение, вдохновленное теми, что уже есть на этой странице:Для справки это метод в AbstractModel.php
источник
getResource()
метод в этой модели: github.com/magento/magento2/blob/2.3-develop/app/code/Magento/…getResource()
был метод, который ранее существовал. В v2.2.2, как я уже упоминал, он уже был объявлен устаревшим. Я подозреваю, что в ветке 2.3 -velop это было завершено. Таким образом, мой пример, который не требует этой функции.Для всех приходит сюда.
Если у вас нет объекта продукта, вы можете получить значение параметра с помощью этих шагов.
Внедрить
\Magento\Eav\Api\AttributeRepositoryInterface
в свой классИспользуйте репо, чтобы получить экземпляр атрибута
Используйте
$attribute
для получения идентификатора опции из значения опцииисточник
Вы можете использовать для получения метки атрибута
Вы можете использовать менеджер объектов:
источник
Пожалуйста, попробуйте этот код
Шаг 1) Сначала вы должны загрузить продукты
Шаг 2) На странице со списком продуктов будет цикл foreach для перечисления таких продуктов, как этот
Шаг 3) Ваш код будет внутри этого цикла. Поместите код ниже в том месте, где вы хотите отобразить метку атрибута.
Просто замените your_attribute_code на любое имя вашего атрибута.
источник