Magento 2 Как создать настройки таблицы в конфигурации системы администратора?

9

В соответствии с magento 1, мы расширяемся от "adminhtml / system_config_backend_serialized_array", чтобы создать такую ​​таблицу: введите описание изображения здесь

Мой вопрос: как мы создаем его в magento 2?

Редактировать: Наконец, с помощью @Marius: это поле Исключения User-Agent в System => Configuration => General => Design => Theme Theme.

введите описание изображения здесь

Мы можем создать новую конфигурацию таблицы на основе этого поля, посмотрев на ее коды "Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions"

thienphucvx
источник
загляните в этот magento.stackexchange.com/questions/86147/… это поможет
Божия
Спасибо. Но я думаю, что ответ @Marius - то, что мне нужно.
thienphucvx

Ответы:

14

Вы можете сделать это, используя, Company / Modulename / etc / adminhtml / system.xml

В разделе -> поле группы

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

В файле модели внешнего интерфейса внутри блока,

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

}

У вас есть таблица отображения в области конфигурации и после сохранения ее значение сохраняется внутри core_config_dataтаблицы.

Ракеш Джесадия
источник
работает нормально Но когда я сохраняю, как <test>это отображается &lt;test2&gt;. Любое предложение?
Божжаия
Привет, сомневаюсь, если я хочу добавить еще одну группу, которая состоит из тех же полей, модель внешнего интерфейса, модель внутреннего интерфейса, которые вы добавили в ваш system.xml, то как мне добавить другую группу с тем же файлом system.xml. при добавлении новой группы, будет ли он загружать шаблон правильно?
Джайса
@Rakesh Jesadiya, пожалуйста, посмотрите и ответьте magento.stackexchange.com/questions/212229/…
Джайса
привет @rakesh Jesadiya, я добавил поля, используя приведенный выше код, но не могу сохранить, и есть ошибка в поле консоли (кол-во) не определено.
faizanbeg
Как создать строки в этой таблице настроек администратора программно?
Ашвани Шукла
4

Эквивалент для adminhtml/system_config_backend_serialized_arrayв Magento 2 есть Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Вы можете взять в качестве примера поле User-Agent Exceptionsиз config и попытаться скопировать его.
Поле определено вMagento/Backend/etc/adminhtml/system.xml

Мариус
источник
Да. Это именно то, что я ищу. Большое спасибо.
thienphucvx
привет @marius, я добавил поля, используя код $ this-> addColumn ('value', ['label' => __ ('Value')]); $ this-> addColumn ('qty', ['label' => __ ('Qty')]); но не
удается