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.


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 .


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.