Magento 2 ¿Cómo crear una configuración de tabla en la configuración del sistema de administración?

9

Según magento 1, ampliamos desde "adminhtml / system_config_backend_serialized_array" para crear una tabla como esta: ingrese la descripción de la imagen aquí

Mi pregunta es: ¿cómo lo creamos en magento 2?

Editar: Finalmente, con la ayuda de @Marius: es el campo Excepciones de agente de usuario en Sistema => Configuración => General => Diseño => Tema de diseño.

ingrese la descripción de la imagen aquí

Podemos crear una nueva configuración de tabla basada en este campo mirando sus códigos "Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions"

thienphucvx
fuente
mire este magento.stackexchange.com/questions/86147/ ... será de gran ayuda
Bojjaiah
Gracias. Pero creo que la respuesta de @Marius es lo que necesito.
thienphucvx

Respuestas:

14

Puede hacerlo usando, Company / Modulename / etc / adminhtml / system.xml

En la sección -> campo de 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>

En el archivo del modelo frontend dentro del bloque,

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

}

Tiene una tabla de visualización en el área de configuración y después de guardar su valor se guarda dentro de la core_config_datatabla.

Rakesh Jesadiya
fuente
Funciona bien. Pero cuando guardo como <test>se muestra &lt;test2&gt;. ¿Cualquier sugerencia?
Bojjaiah
Hola, tengo dudas: si deseo agregar otro grupo que consta de los mismos campos, modelo de interfaz, modelo de fondo que ha agregado en su system.xml, entonces, ¿cómo agrego otro grupo con el mismo archivo system.xml? mientras agrega un nuevo grupo, ¿cargará la plantilla correctamente?
Jaisa
@Rakesh Jesadiya, mira y responde magento.stackexchange.com/questions/212229/…
Jaisa
hola @rakesh Jesadiya, he agregado campos usando el código anterior pero no puedo guardar y hay un error en el campo de consola (cantidad) no definido.
faizanbeg
¿Cómo crear las filas en esta tabla de configuración de administrador mediante programación?
Ashwani Shukla
4

El equivalente para adminhtml/system_config_backend_serialized_arrayen Magento 2 es Magento\Config\Model\Config\Backend\Serialized\ArraySerialized.
Puede tomar como ejemplo el campo User-Agent Exceptionsdesde config e intentar replicarlo.
El campo se define enMagento/Backend/etc/adminhtml/system.xml

Marius
fuente
Si. Es exactamente lo que estoy buscando. Muchas gracias.
thienphucvx
hola @marius, he agregado campos usando el código $ this-> addColumn ('value', ['label' => __ ('Value')]); $ this-> addColumn ('qty', ['label' => __ ('Qty')]); pero no se puede guardar y hay un error en el campo (cantidad) de la consola no definido. Por favor ayuda
faizanbeg