Как получить настраиваемую метку и значение атрибута в magento 2?


Использование диспетчера объектов не является правильным способом, но этот код предназначен только для тестирования.

Я хочу получить значение атрибута, которое доступно в настраиваемых продуктах. Я пробовал использовать приведенный ниже код, но я получаю значение всех атрибутов, которое назначено в раскрывающемся списке атрибуты.

Пожалуйста, смотрите ниже код

   <?php
    $objectManager  = \Magento\Framework\App\ObjectManager::getInstance();
    $repository = $objectManager->create('Magento\Catalog\Model\ProductRepository');
    $product    = $repository->getById($p_coll->getId());    
    $data = $product->getTypeInstance()->getConfigurableOptions($product);
    $options = array();

    foreach ($data as $attr) {
        foreach ($attr as $p) {
            $options[] = $p['attribute_code'];
        }
    }


    $statu = 0;


    $eavConfig = $objectManager->get('\Magento\Eav\Model\Config');
    foreach (array_unique($options) as $code) {
        $attribute     = $eavConfig->getAttribute('catalog_product', $code);
        $options       = $attribute->getSource()->getAllOptions();
        $optionsExists = array();
        if ($options) {
            echo $code;
            echo "<select>";
            foreach ($options as $option) {
                    //$optionsExists[] = $option['label']; 
                if ($option['label']) {
                    echo "<option value='" . $option['label'] . "'>" . $option['label'] . "</option>";
                }
            }
            echo "</select>";
        }


    }
    ?>

Пожалуйста, смотрите ниже снимок экрана

enter image description here

Доступно только 2 цвета для этого настраиваемого продукта, но все цветовые варианты показаны в моей коллекции. Пожалуйста, смотрите скриншот ниже. enter image description here

Author: Akash, 2018-07-05

2 answers

Пожалуйста, попробуйте использовать приведенный ниже код и, пожалуйста, введите идентификатор продукта, чтобы получить значение

<?php

use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
// adding bootstrap
$bootstraps = Bootstrap::create(BP, $_SERVER);
$object_Manager = $bootstraps->getObjectManager();

$app_state = $object_Manager->get('\Magento\Framework\App\State');
$app_state->setAreaCode('frontend');


$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load(**product id**);

$productTypeInstance = $objectManager->get('Magento\ConfigurableProduct\Model\Product\Type\Configurable');
$productAttributeOptions = $productTypeInstance->getConfigurableAttributesAsArray($product);
foreach ($productAttributeOptions as $key => $value) {

    $tmp_option = $value['values'];
    if(count($tmp_option) > 0)
    {
        echo "<h3>".$value['label']."</h3>";
        echo "<select id='".$key."_".$value['label']."'>";
        foreach ($tmp_option as $tmp) 
        {
            echo "<option value='".$key."_".$tmp['value_index']."'>".$tmp['label']."</option>";
        }
        echo "</select>";
    }
}
 5
Author: Kushal, 2018-07-05 09:43:18
public function execute()
{
    $collection = $this->_collectionFactory->create()
     ->addFieldToFilter(
        'frontend_input',
        'select'
    )->addFieldToFilter(
        'is_user_defined',
        1
    )->addFieldToFilter(
        'is_global',
        1
    );

    foreach($collection as $attributes)
    {
        $attributeId = $attributes->getAttributeId();
        echo $attributeId."<br/>";
        $attribute =$this->eavConfig->getAttribute('catalog_product', $attributeId );//"color" is the attribute_code
        $allOptions = $attribute->getSource()->getAllOptions(true, true);
            foreach ( $allOptions as $instance ) {
                $id = $instance['value']; //id of the option
                echo $id ;
                $value = $instance['label']; //Label of the option
                echo $value;
            }
        }
    return $this->_pageFactory->create();
}

Это даст все настраиваемые атрибуты продукта.разместите этот код там, где вы хотите!!!!! Это даст вам идентификатор атрибута и все его значение

 0
Author: Mguru48, 2020-03-11 13:06:16