Magento 2 Bagaimana cara membuat pengaturan tabel dalam konfigurasi sistem admin?

9

Menurut magento 1, kami memperluas dari "adminhtml / system_config_backend_serialized_array" untuk membuat tabel seperti ini: masukkan deskripsi gambar di sini

Pertanyaan saya adalah: Bagaimana kita membuatnya di Magento 2?

Sunting: Akhirnya, dengan bantuan @Marius: bidang Pengecualian Agen-Pengguna di System => Configuration => General => Design => Tema Desain.

masukkan deskripsi gambar di sini

Kita dapat membuat konfigurasi tabel baru berdasarkan bidang ini dengan melihat kode "Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions"

thienphucvx
sumber
lihat ke magento.stackexchange.com/questions/86147/... ini akan membantu
Bojjaiah
Terima kasih. Tapi saya pikir jawaban dari @Marius adalah yang saya butuhkan.
thienphucvx

Jawaban:

14

Anda dapat melakukannya dengan menggunakan, Perusahaan / Modulename / etc / adminhtml / system.xml

Di bawah bagian -> bidang grup

<field id="mapping" translate="label comment tooltip" sortOrder="80" showInDefault="1" showInWebsite="1" showInStore="0">
    <label>Customer Fields Mapping</label>
    <frontend_model>Company\Modulename\Block\Adminhtml\System\Config\Form\Field\Customermap</frontend_model>
    <backend_model>Magento\Config\Model\Config\Backend\Serialized\ArraySerialized</backend_model>
    <comment>
        <![CDATA[Add the comments!]]>
    </comment>
    <tooltip>Map the magento customer field to custom module merge_fields</tooltip>
</field>

Dalam file model frontend di dalam blok,

<?php
namespace Company\Modulename\Block\Adminhtml\System\Config\Form\Field;

class Customermap extends \Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray
{
    /**
     * @var \Magento\Framework\Data\Form\Element\Factory
     */
    protected $_elementFactory;

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Data\Form\Element\Factory $elementFactory
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Data\Form\Element\Factory $elementFactory,
        array $data = []
    )
    {
        $this->_elementFactory  = $elementFactory;
        parent::__construct($context,$data);
    }
    protected function _construct()
    {
        $this->addColumn('field1', ['label' => __('Field1')]);
        $this->addColumn('field2', ['label' => __('FIeld2')]);
        $this->_addAfter = false;
        $this->_addButtonLabel = __('Add');
        parent::_construct();
    }

}

Anda memiliki tabel tampilan di area konfigurasi dan setelah menyimpan nilainya disimpan di dalam core_config_datatabel.

Rakesh Jesadiya
sumber
itu bekerja dengan baik. Tetapi ketika saya simpan seperti <test>itu sedang ditampilkan &lt;test2&gt;. Ada saran?
Bojjaiah
Hai, setelah ragu, Jika saya ingin menambahkan grup lain yang terdiri dari bidang yang sama, model frontend, model backend yang telah Anda tambahkan di system.xml lalu bagaimana cara menambahkan grup lain dengan file system.xml yang sama. saat menambahkan grup baru, apakah akan memuat template dengan benar?
Jaisa
@Rakesh Jesadiya, Silakan lihat dan jawab magento.stackexchange.com/questions/212229/…
Jaisa
hai @rakesh Jesadiya, saya telah menambahkan bidang menggunakan kode di atas tetapi tidak dapat menyimpan dan ada kesalahan pada bidang konsol (qty) tidak didefinisikan.
faizanbeg
Bagaimana cara membuat baris dalam tabel konfigurasi admin ini secara terprogram?
Ashwani Shukla
4

Setara dengan adminhtml/system_config_backend_serialized_arraydi Magento 2 adalah Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Anda dapat mengambil contoh bidang User-Agent Exceptionsdari konfigurasi dan mencoba untuk mereplikasi.
Bidang ini didefinisikan dalamMagento/Backend/etc/adminhtml/system.xml

Marius
sumber
Iya. Persis seperti yang saya cari. Terima kasih banyak.
thienphucvx
hai @ maarius, saya telah menambahkan bidang menggunakan kode $ this-> addColumn ('value', ['label' => __ ('Value')]); $ this-> addColumn ('qty', ['label' => __ ('Qty')]); tetapi tidak dapat menyimpan dan ada kesalahan pada bidang konsol (qty) tidak ditentukan. Tolong bantu
faizanbeg