Magento 2 mendapatkan semua atribut produk tanpa id produk


12

Saya ingin mengambil semua atribut produk yang tersedia, lalu mengonversinya menjadi nama & nilai untuk bidang opsi pilihan saya. Di Magento 1 saya bisa mencapainya seperti ini:

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

Apakah ada cara di Magento 2 untuk melakukan hal yang sama?


Saya telah menggunakan kode menurut "RonakChauhan" itu berfungsi dengan baik dalam file blok saya Tapi saya menghadapi beberapa masalah saya butuh bantuan karena saya tidak dapat memfilter atribut sesuai dengan visibilitas mereka yaitu saya memerlukan atribut yang statusnya diatur "terlihat = > ya "di Admin ... Bantuan apa pun akan Diapresiasi ... Ini adalah Kode saya untuk mendapatkan kelas koleksi Atribut Produk yang diperluas ProductList \ Magento \ Framework \ View \ Element \ Template {protected $ _attributeFactory; fungsi publik __construct (\ Magento \ Catalogue \ Model \ ResourceModel \ Eav \ Attribute $ attributeFactory) {parent :: __ construct ($ context); $ this -> _ attrib
Gurjeet Singh

Jawaban:


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

Di sini Anda dapat memiliki seluruh koleksi atribut, Anda dapat memfilternya sesuai kebutuhan Anda.


bagaimana cara mendapatkan nama atribut dan id?
lelaki sederhana

menggunakan foreachAnda bisa getAttributeId()jugagetAttributeName()
Ronak Chauhan

Periksa jawaban yang diperbarui
Ronak Chauhan

cetak kosong getAttributeName
pria sederhana

1
echo "<pre>"; print_r($attributes);exit;gunakan ini di foreach dan periksa
Ronak Chauhan

8

Gagasan lain adalah bahwa kita harus mencoba dengan Layer Kontrak Layanan .

Gunakan Magento\Eav\Api\AttributeRepositoryInterfaceuntuk mendapatkan atribut eav.

Saya sudah punya jawaban di sini: /magento//a/161426/33057

Sebagai contoh:

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

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

CATATAN: Untuk kode jenis entitas dalam getListmetode, kita dapat menemukan dalam eav_entity_typetabel.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.