Magento 2 उत्पाद आईडी के बिना सभी उत्पाद विशेषताओं को प्राप्त करते हैं


12

मैं उन सभी उत्पाद विशेषताओं को पुनः प्राप्त करना चाहता हूं जो उपलब्ध हैं, फिर इसे मेरे चयनित विकल्प फ़ील्ड के नाम और मान में परिवर्तित करें। Magento 1 में मैं इसे इस तरह हासिल कर सकता हूं:

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

वहाँ Magento 2 में एक ही काम करने के लिए एक रास्ता है?


मैंने "रोनकचौहान" के अनुसार कोड का उपयोग किया है यह मेरी ब्लॉक फ़ाइल में ठीक काम कर रहा है लेकिन मुझे कुछ समस्या का सामना करना पड़ रहा है जिसमें मुझे उनकी दृश्यता के अनुसार विशेषताओं को फ़िल्टर करने में असमर्थ है अर्थात मुझे उन विशेषताओं की आवश्यकता है जिनकी स्थिति "दृश्यमान" सेट है = > हां "व्यवस्थापक में ... किसी भी सहायता की सराहना की जाएगी ... उत्पाद गुण प्राप्त करने के लिए यहां मेरा कोड है ProductList \ Magento \ फ्रेमवर्क \ View \ Element \ Template \" विस्तारित $ _attributeFactory; सार्वजनिक समारोह __construct (\ Magento \ कैटलॉग \ Model \ ResourceModel \ Eav \ Attribute $ विशेषताFactory) {माता-पिता :: __ निर्माण ($ संदर्भ); $ यह -> _
अत्रिब

जवाबों:


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

यहां आपके पास संपूर्ण विशेषताओं का संग्रह हो सकता है, आप इसे अपनी आवश्यकता के अनुसार फ़िल्टर कर सकते हैं।


विशेषता नाम और आईडी कैसे प्राप्त करें?
साधारण लड़का

foreachआप का उपयोग कर के getAttributeId()रूप में अच्छी तरह से प्राप्त कर सकते हैंgetAttributeName()
रौनक चौहान

अद्यतन उत्तर की जाँच करें
रौनक चौहान

getAttributeName प्रिंट रिक्त
साधारण आदमी

1
echo "<pre>"; print_r($attributes);exit;इसे फॉरचेक और चेक में उपयोग करें
रौनक चौहान

8

एक और विचार यह है कि हमें सेवा संविदा परत के साथ प्रयास करना चाहिए ।

Magento\Eav\Api\AttributeRepositoryInterfaceईव विशेषता प्राप्त करने के लिए उपयोग करें ।

मेरे पास यहाँ पहले से ही एक उत्तर है: /magento//a/161426/33057

उदाहरण के लिए:

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

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

नोट:getList विधि में इकाई प्रकार कोड के लिए , हम eav_entity_typeतालिका में पा सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.