Magento 2如何在管理系统配置中创建表格设置?


9

根据magento 1,我们从“ adminhtml / system_config_backend_serialized_array”扩展到创建一个像这样的表: 在此处输入图片说明

我的问题是:我们如何在magento 2中创建它?

编辑:最后,在@Marius帮助下:它是System => Configuration => General => Design => Design Theme中的User-Agent Exceptions字段。

在此处输入图片说明

我们可以通过查看该字段的代码“ Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions”来创建一个新的表配置



谢谢。但是我认为@Marius的答案是我需要的。
thienphucvx

Answers:


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;。有什么建议吗?
Bojjaiah 2015年

嗨,您有疑问吗,如果我想添加另一个由相同字段组成的组,即您在system.xml中添加的前端模型,后端模型,那么如何添加具有相同system.xml文件的另一个组。在添加新组时,是否可以正确加载模板?
Jaisa

@Rakesh Jesadiya,请看看并回答magento.stackexchange.com/questions/212229/…–
Jaisa

@rakesh Jesadiya,您好,我使用上述代码添加了字段,但无法保存,并且控制台字段(qty)上未定义错误。
faizanbeg '18

如何以编程方式在此admin配置表中创建行?
Ashwani Shukla '18

4

adminhtml/system_config_backend_serialized_arrayMagento 2中的等效项是Magento\Config\Model\Config\Backend\Serialized\ArraySerialized
您可以以User-Agent Exceptionsconfig中的字段为例,然后尝试复制它。
该字段在Magento/Backend/etc/adminhtml/system.xml


是。这正是我在寻找的东西。非常感谢你。
thienphucvx

嗨,@ marius,我已经使用代码$ this-> addColumn('value',['label'=> __('Value')])添加了字段。$ this-> addColumn('qty',['label'=> __('Qty')]); 但无法保存,并且控制台字段(qty)上的错误未定义,请帮助
faizanbeg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.