Magento2.1 Kategori dropdown atribut khusus


10

Langkah-langkah mereproduksi

1. Script Modul UpgradeData.php berisi:

$categorySetup->addAttribute(Category::ENTITY, 'roflcopter', [
                    'type' => 'int',
                    'label' => 'CMS Block',
                    'input' => 'select',
                    'source' => 'Magento\Catalog\Model\Category\Attribute\Source\Page',
                    'required' => false,
                    'sort_order' => 20,
                    'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                    'group' => 'Display Settings',
            ]);

2. lihat / adminhtml / ui_component / category_form.xml

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="Navigation">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">Navigation</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="sortOrder" xsi:type="number">100</item>
            </item>
        </argument>
        <field name="roflcopter">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="sortOrder" xsi:type="number">60</item>
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="formElement" xsi:type="string">select</item>
                    <item name="label" xsi:type="string" translate="true">Roflcopter</item>
                </item>
            </argument>
        </field>
    </fieldset>
</form>

Hasil yang diharapkan

  1. Dalam bentuk kategori akan muncul dropdown pilih Roflcopter dengan Blok CMS sebagai opsi

Hasil yang sebenarnya

  1. Dropdown kosong

Jawaban:


14

Tambahkan tag opsi untuk membuat opsi pilih. Dalam kasus Anda ini seharusnya


<field name="roflcopter">
    <argument name="data" xsi:type="array">
        <item name="options" xsi:type="object">Magento\Catalog\Model\Category\Attribute\Source\Page</item>
        <item name="config" xsi:type="array">
            <item name="sortOrder" xsi:type="number">70</item>
            <item name="dataType" xsi:type="string">string</item>
            <item name="formElement" xsi:type="string">select</item>
            <item name="label" xsi:type="string" translate="true">Roflcopter</item>
        </item>
    </argument>
</field>


Mungkin Anda tahu jika saya dapat menampilkan / menyembunyikan tab ini dan / atau atributnya berdasarkan beberapa kondisi, misalnya kedalaman kategori?
Sergejs Zakatovs

TERIMA KASIH! Saya mencari ini begitu lama. Dokumen sangat tidak jelas tentang topik ini. Bagaimana kamu tahu ini?
CompactCode

Data tidak disimpan dalam database @Sohel Rana
Chirag Parmar

2

Saya telah melakukan dalam kasus saya. Saya punya opsi khusus, mis. L1, L2 dan L3. Saya perlu mendapatkannya di atribut khusus sebagai nilai. Jadi saya dibuat file sumber dalam modul - vendor \ module \ Model \ Config \ Source \ Options.php

file ini berisi kode kecil untuk membuat opsi, Di sini Anda dapat mengikuti kode

 <?php
    /**
     * Copyright © 2013-2017 Magento, Inc. All rights reserved.
     * See COPYING.txt for license details.
     */
    namespace Vendor\module\Model\Config\Source;
    /**
     * Catalog category landing page attribute source
     *
     * @author      Magento Core Team <core@magentocommerce.com>
     */
    class Options extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
    {
        /**
         * {@inheritdoc}
         * @codeCoverageIgnore
         */
        public function getAllOptions()
        {
            if (!$this->_options) {
                $this->_options = [
                    ['value' => 'l1', 'label' => __('L1')],
                    ['value' => 'l2', 'label' => __('L2')],
                    ['value' => 'l3', 'label' => __('L3')],
                ];
            }
            return $this->_options;
        }
          /**
         * Get options in "key-value" format
         *
         * @return array
         */
        public function toArray()
        {
            return [
                'l1' => __('L1'),
                'l2' => __('L2'),
                'L3' => __('L3'),
                ];
        }

    }

kemudian setelah di installdata.php Anda, Anda harus memanggil ini sebagai sumber

$eavSetup->addAttribute(
            Category::ENTITY,
            'category_level_rendering',
            [
                'type' => 'varchar',
                'backend' => '',
                'frontend' => '',
                'label' => 'Category Level rendering',
                'input' => 'select',
                'required' => false,
                'sort_order' => 100,
                'source' => '',
                'visible'  => true,
                'source' => 'vendor\module\Model\Config\Source\Options',
                'default'  => '0',
                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                'group' => 'General Information',
                'used_in_product_listing' => true,
             ]
        );

Kemudian juga tambahkan baris dalam file xml

<field name="category_level_rendering">
                <argument name="data" xsi:type="array">
/*Here is the code added to get the options on dropdown*/
<item name="options" xsi:type="object">Vendor\module\Model\Config\Source\Options</item>
                    <item name="config" xsi:type="array">
                        <item name="sortOrder" xsi:type="number">10</item>
                        <item name="dataType" xsi:type="string">string</item>
                        <item name="formElement" xsi:type="string">select</item>
                        <item name="label" xsi:type="string" translate="true">Category Level Rendering</item>
                    </item>
                </argument>
            </field>

Simpan, siram cache dan silakan periksa.

Semoga bermanfaat bagi Anda.

Tolong beri saya balasan jika itu berhasil untuk Anda.


Saya mendapatkan jenis kesalahan ini: Elemen 'bidang': Elemen ini tidak diharapkan. Yang diharapkan adalah salah satu (pengaturan, kolom, kolom Action, kolom pilihan). Baris: 681
Pratik Mehta

bagaimana Anda menyimpan data,
Mujahidh

Data tidak disimpan dalam database @Jdprasad V
Chirag Parmar

Ini berfungsi untuk saya, silakan periksa lagi, jika Anda melakukan perubahan pada halaman skema.
Jdprasad V

1
+1 untuk ini. Ini bekerja untuk saya. ] tidak ada dalam array. Saya mengeditnya.
Chirag Parmar
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.