Magento 2 Jak utworzyć ustawienie tabeli w konfiguracji systemu administratora?

9

Zgodnie z magento 1, rozszerzamy z „adminhtml / system_config_backend_serialized_array”, aby utworzyć tabelę taką: wprowadź opis zdjęcia tutaj

Moje pytanie brzmi: jak tworzymy to w Magento 2?

Edycja: Wreszcie, z pomocą @Marius: jest to pole Wyjątki User-Agent w System => Konfiguracja => Ogólne => Projekt => Motyw projektu.

wprowadź opis zdjęcia tutaj

Możemy utworzyć nową konfigurację tabeli na podstawie tego pola, patrząc na jej kody „Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions”

Thienphucvx
źródło
zajrzyj do tego magento.stackexchange.com/questions/86147/... to pomoże
Bojjaiah
Dziękuję Ci. Myślę jednak, że potrzebuję odpowiedzi z @Marius.
thienphucvx

Odpowiedzi:

15

Możesz to zrobić za pomocą, Company / Modulename / etc / adminhtml / system.xml

W sekcji -> pole grupy

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

W pliku modelu interfejsu wewnątrz bloku,

<?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();
    }

}

Wyświetlasz tabelę w obszarze konfiguracji i po zapisaniu jej wartości są zapisywane w core_config_datatabeli.

Rakesh Jesadiya
źródło
działa dobrze. Ale kiedy zapisuję <test>, to się wyświetla &lt;test2&gt;. Jakieś sugestie?
Bojjaiah
Cześć, mam wątpliwości, jeśli chcę dodać kolejną grupę, która składa się z tych samych pól, modelu interfejsu użytkownika, modelu zaplecza dodanego w pliku system.xml, to jak dodać kolejną grupę z tym samym plikiem system.xml. dodając nową grupę, czy poprawnie załaduje szablon?
Jaisa
@Rakesh Jesadiya, proszę spojrzeć i odpowiedzieć magento.stackexchange.com/questions/212229/…
Jaisa
cześć @rakesh Jesadiya, dodałem pola przy użyciu powyższego kodu, ale nie mogę zapisać, a pole konsoli (ilość) nie zostało zdefiniowane.
faizanbeg
Jak programowo utworzyć wiersze w tej tabeli konfiguracji administratora?
Ashwani Shukla
4

Odpowiednikiem adminhtml/system_config_backend_serialized_arrayw Magento 2 jest Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Możesz wziąć jako przykład pole User-Agent Exceptionsz konfiguracji i spróbować je replikować.
Pole jest zdefiniowane wMagento/Backend/etc/adminhtml/system.xml

Marius
źródło
Tak. Właśnie tego szukam. Dziękuję Ci bardzo.
thienphucvx
cześć @marius, dodałem pola za pomocą kodu $ this-> addColumn („wartość”, [„etykieta” => __ („wartość”)]); $ this-> addColumn („qty”, [„label” => __ („Qty”)]); ale nie można zapisać i wystąpił błąd w polu konsoli (ilość) nie została zdefiniowana. Proszę o pomoc
faizanbeg