Magento 2 Como criar uma configuração de tabela na configuração do sistema administrativo?

9

De acordo com o magento 1, estendemos de "adminhtml / system_config_backend_serialized_array" para criar uma tabela como esta: insira a descrição da imagem aqui

Minha pergunta é: como a criamos no magento 2?

Edit: Finalmente, com a ajuda do @Marius: é o campo Exceções de agente do usuário em System => Configuration => General => Design => Design Theme.

insira a descrição da imagem aqui

Podemos criar uma nova configuração de tabela com base nesse campo, observando os códigos "Magento \ Config \ Bloco \ Sistema \ Config \ Form \ Campo \ Regexceptions"

thienphucvx
fonte
olhe para este magento.stackexchange.com/questions/86147/… ele vai ajudar
Bojjaiah
Obrigado. Mas acho que a resposta de @Marius é o que eu preciso.
Thienphucvx

Respostas:

14

Você pode fazer isso usando Company / Modulename / etc / adminhtml / system.xml

Na seção -> campo do grupo

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

No arquivo de modelo de front-end dentro do bloco,

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

}

Você exibe a tabela na área de configuração e, após salvar seu valor, é salvo na core_config_datatabela.

Rakesh Jesadiya
fonte
está funcionando bem. Mas quando eu salvar como <test>ele está exibindo &lt;test2&gt;. Alguma sugestão?
Bojjaiah
Olá, duvido que, se eu quiser adicionar outro grupo que consiste nos mesmos campos, modelo de front-end, modelo de back-end que você adicionou no seu system.xml, então como faço para adicionar outro grupo com o mesmo arquivo system.xml? ao adicionar um novo grupo, se ele carregará o modelo corretamente?
Jaisa
@Rakesh Jesadiya, dê uma olhada e responda magento.stackexchange.com/questions/212229/…
Jaisa
oi @rakesh Jesadiya, adicionei campos usando o código acima, mas não é possível salvar e há um erro no campo do console (qty) não definido.
Faizanbeg
Como criar as linhas nesta tabela de configuração de administrador programaticamente?
Ashwani Shukla
4

O equivalente adminhtml/system_config_backend_serialized_arrayno Magento 2 é Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Você pode tomar como exemplo o campo User-Agent Exceptionsde config e tentar replicá-lo.
O campo é definido emMagento/Backend/etc/adminhtml/system.xml

Marius
fonte
Sim. É exatamente o que estou procurando. Muito obrigado.
Thienphucvx
oi @marius, adicionei campos usando o código $ this-> addColumn ('value', ['label' => __ ('Value')]); $ this-> addColumn ('qty', ['label' => __ ('Qty')]); mas não foi possível salvar e há um erro no campo do console (qty) não definido Por favor, ajude
faizanbeg