Magento 2 obtiene todos los atributos del producto sin identificación del producto


12

Quiero recuperar todos los atributos del producto que están disponibles, luego convertirlo a nombre y valor para mi campo de opciones de selección. En Magento 1 puedo lograrlo así:

public function getMagentoAttributes()
{
    $values[] = array(
        'value' => '',
        'label' => 'Pick Product Attribute'
    );

    $categories = Mage::getResourceModel('catalog/product_attribute_collection')->getItems();

    foreach ($categories as $category) {
        if ($category->getFrontendLabel() != '') {
            $label = $category->getFrontendLabel();
        } else {
            $label = $category->getAttributecode();
        }

        $values[] = array(
            'value' => $category->getAttributecode(),
            'label' => $label
        );
    }
    return $values;
}

¿Hay alguna manera en magento 2 para hacer lo mismo?


He usado el código de acuerdo con "RonakChauhan", funciona bien en mi archivo de bloque. Pero estoy enfrentando algún problema, necesito ayuda porque no puedo filtrar los atributos de acuerdo con su visibilidad, es decir, necesito los atributos cuyo estado está configurado "visible = > yes "en Admin ... Cualquier ayuda será apreciada ... Aquí está mi código para obtener la clase de colección de Product Attribute ProductList extend \ Magento \ Framework \ View \ Element \ Template {protected $ _attributeFactory; función pública __construct (\ Magento \ Catalog \ Model \ ResourceModel \ Eav \ Attribute $ attributeFactory) {parent :: __ construct ($ context); $ this -> _ attrib
Gurjeet Singh

Respuestas:


10
protected $_attributeFactory;

 public function __construct(
    ....
    \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attributeFactory,
    ....
) {
    ....
    $this->_attributeFactory = $attributeFactory;
    ....
}

public function <func_name>()
{
    $attributeInfo = $this->_attributeFactory->getCollection();

   foreach($attributeInfo as $attributes)
   {
        $attributeId = $attributes->getAttributeId();
        // You can get all fields of attribute here
   }
}

Aquí puede tener una colección completa de atributos, puede filtrarla según sus necesidades.


¿Cómo obtener el nombre y la identificación del atributo?
chico simple

usando foreachpuede obtener getAttributeId()tan bien comogetAttributeName()
Ronak Chauhan

Verificar respuesta actualizada
Ronak Chauhan

getAttributeName print blank
simple guy

1
echo "<pre>"; print_r($attributes);exit;use esto en foreach y verifique
Ronak Chauhan

8

Otra idea es que deberíamos probar con la capa de contratos de servicio .

Use Magento\Eav\Api\AttributeRepositoryInterfacepara obtener el atributo eav.

Ya tengo una respuesta aquí: /magento//a/161426/33057

Por ejemplo:

    $searchCriteria = $this->searchCriteriaBuilder->create();
    $attributeRepository = $this->attributeRepository->getList(
        'catalog_product',
        $searchCriteria
    );

    foreach ($attributeRepository->getItems() as $items) {
        $items->getAttributeCode();
        $items->getFrontendLabel();
    }

NOTA: Para el código de tipo de entidad en el getListmétodo, podemos encontrarlo en la eav_entity_typetabla.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.