Magento 2, ürün kimliği olmadan tüm ürün özelliklerini alır


12

İstiyorum tüm ürün özelliklerini almak olanlar daha sonra, mevcut benim seçenekleri seçin alanı için isim ve değere dönüştürmek. Magento 1'de şöyle başarabilirim:

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'de aynı şeyi yapmanın bir yolu var mı?


"RonakChauhan" göre kod kullandım benim blok dosyasında iyi çalışıyor ama Ben görünürlüğü göre öznitelikleri filtre öznitelikleri filtre edemiyorum ki ben yardıma ihtiyacım var yani durumu ayarlanmış özniteliklere ihtiyacım var "görünür = > evet "Yönetici'de ... Herhangi bir Yardım Takdir Edilecek ... İşte Product Attribute koleksiyon sınıfını almak için Kodum ProductList \ Magento \ Framework \ Görünüm \ Element \ Template {korumalı $ _attributeFactory; public function __construct (\ Magento \ Katalog \ Model \ ResourceModel \ Eav \ Attribute $ attributeFactory) {parent :: __ construct ($ context); $ this -> _ attrib
Gurjeet Singh

Yanıtlar:


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

Burada tüm özellik koleksiyonuna sahip olabilir, ihtiyacınıza göre filtreleyebilirsiniz.


özellik adı ve kimliği nasıl alınır?
Basit adam

kullanarak foreachalabilirsiniz getAttributeId()yanı sıragetAttributeName()
Ronak Chauhan

Güncel cevabı kontrol et
Ronak Chauhan

getAttributeName yazdırma boş
basit adam

1
echo "<pre>"; print_r($attributes);exit;bunu foreach'te kullanın ve kontrol edin
Ronak Chauhan

8

Başka bir fikir, Hizmet Sözleşmeleri Katmanı ile denememiz gerektiğidir .

Magento\Eav\Api\AttributeRepositoryInterfaceEav özelliğini almak için kullanın .

Zaten burada bir cevabım var: /magento//a/161426/33057

Örneğin:

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

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

NOT:getList Yöntemdeki varlık türü kodu için eav_entity_typetabloda bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.