Magento 2 Wie erstelle ich eine Tabelleneinstellung in der Admin-Systemkonfiguration?

9

Gemäß Magento 1 erweitern wir "adminhtml / system_config_backend_serialized_array", um eine Tabelle wie die folgende zu erstellen: Geben Sie hier die Bildbeschreibung ein

Meine Frage ist: Wie erstellen wir es in Magento 2?

Bearbeiten: Zum Schluss mit der Hilfe von @Marius: Das Feld User-Agent-Ausnahmen im System => Konfiguration => Allgemein => Design => Design-Thema.

Geben Sie hier die Bildbeschreibung ein

Wir können eine neue Tabellenkonfiguration basierend auf diesem Feld erstellen, indem wir uns die Codes "Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions" ansehen.

thienphucvx
quelle
Schauen Sie in diese magento.stackexchange.com/questions/86147/… es wird helfen
Bojjaiah
Danke. Aber ich denke, die Antwort von @Marius ist genau das, was ich brauche.
Thienphucvx

Antworten:

13

Sie können dies mit Company / Modulename / etc / adminhtml / system.xml tun

Unter Abschnitt -> Gruppenfeld

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

In der Frontend-Modelldatei im Block,

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

}

Sie haben eine Anzeigetabelle im Konfigurationsbereich und werden nach dem Speichern ihres Wertes in der core_config_dataTabelle gespeichert .

Rakesh Jesadiya
quelle
es funktioniert gut. Aber wenn ich speichere wie <test>es angezeigt wird &lt;test2&gt;. Irgendein Vorschlag?
Bojjaiah
Hallo, Zweifel, wenn ich eine weitere Gruppe hinzufügen möchte, die aus denselben Feldern, Frontend-Modell und Backend-Modell besteht, die Sie in Ihrer system.xml hinzugefügt haben, wie füge ich dann eine weitere Gruppe mit derselben system.xml-Datei hinzu? Ob beim Hinzufügen einer neuen Gruppe die Vorlage ordnungsgemäß geladen wird?
Jaisa
@ Rakesh Jesadiya, bitte schauen Sie und antworten Sie magento.stackexchange.com/questions/212229/…
Jaisa
hi @rakesh Jesadiya, ich habe Felder mit dem obigen Code hinzugefügt, kann sie jedoch nicht speichern, und es ist ein Fehler im Konsolenfeld (Menge) nicht definiert.
Faizanbeg
Wie erstelle ich die Zeilen in dieser Admin-Konfigurationstabelle programmgesteuert?
Ashwani Shukla
4

Das Äquivalent für adminhtml/system_config_backend_serialized_arrayin Magento 2 ist Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Sie können das Feld User-Agent Exceptionsaus config als Beispiel nehmen und versuchen, es zu replizieren.
Das Feld ist definiert inMagento/Backend/etc/adminhtml/system.xml

Marius
quelle
Ja. Es ist genau das, wonach ich suche. Vielen Dank.
Thienphucvx
hi @marius, ich habe Felder mit dem Code $ this-> addColumn ('value', ['label' => __ ('Value')]) hinzugefügt; $ this-> addColumn ('qty', ['label' => __ ('Qty')]); aber nicht in der Lage zu speichern und es gibt einen Fehler im Konsolenfeld (Menge) nicht definiert Bitte helfen Sie
faizanbeg