Magento 2 ottiene tutti gli attributi del prodotto senza ID prodotto


12

Voglio recuperare tutti gli attributi del prodotto disponibili, quindi convertirli in nome e valore per il campo delle mie opzioni di selezione. In Magento 1 posso realizzarlo in questo modo:

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;
}

C'è un modo in Magento 2 di fare la stessa cosa?


Ho usato il codice secondo "RonakChauhan" funziona bene nel mio file di blocco Ma sto affrontando qualche problema Ho bisogno di aiuto in quanto non sono in grado di filtrare gli attributi in base alla loro visibilità, cioè ho bisogno degli attributi il ​​cui stato è impostato "visibile = > Sì "in Admin ... Qualsiasi aiuto verrà apprezzato ... Ecco il mio codice per ottenere la classe di raccolta degli attributi del prodotto ProductList estende \ Magento \ Framework \ View \ Element \ Template {protetto $ _attributeFactory; funzione pubblica __construct (\ Magento \ Catalog \ Model \ ResourceModel \ Eav \ Attribute $ AttribFactory) {parent :: __ construct ($ context); $ this -> _ attrib
Gurjeet Singh,

Risposte:


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
   }
}

Qui puoi avere un'intera raccolta di attributi, puoi filtrarli secondo le tue necessità.


come ottenere il nome e l'id dell'attributo?
ragazzo semplice

usando foreachpuoi ottenere getAttributeId()anchegetAttributeName()
Ronak Chauhan

Controlla la risposta aggiornata
Ronak Chauhan

getAttributeName print blank
ragazzo semplice

1
echo "<pre>"; print_r($attributes);exit;usalo in foreach e controlla
Ronak Chauhan

8

Un'altra idea è che dovremmo provare con il livello dei contratti di servizio .

Utilizzare Magento\Eav\Api\AttributeRepositoryInterfaceper ottenere l'attributo eav.

Ho già una risposta qui: /magento//a/161426/33057

Per esempio:

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

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

NOTA: per il codice del tipo di entità nel getListmetodo, possiamo trovare nella eav_entity_typetabella.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.