Magento 2: system.xml ha guardado la validación de configuración

9

Desarrollé una extensión para Magento2 que guarda las configuraciones usando un system.xml y me gustaría validar los valores que ingresa el usuario. ¿Cómo puedo validar esos valores?

Omry Zobel
fuente
Qué tipo de valores desea validar, si los valores son contables, intente usar el menú desplegable y restringir el usuario.
amit_game
@amit_game desafortunadamente son campos de entrada para texto y necesito alguna validación personalizada (al menos que la entrada no es nula)
Omry Zobel

Respuestas:

13

Puede aplicar la validación en el cuadro de texto en magento 2 de esta manera,

<field id="custom_path" translate="label comment" type="text" sortOrder="4" showInDefault="1" showInWebsite="0" showInStore="0">
   <label>Custom Admin Path</label>
   <validate>required-entry</validate>              
   <comment>You will have to sign in after you save your custom admin path.</comment>
</field>

Puede guardar validate-alphanum or validate-numbervalores alfanuméricos y numéricos dentro de la etiqueta de validación.

Gracias.

Rakesh Jesadiya
fuente
8

puede adjuntar un modelo de back-end al campo y puede validar el valor del lado del servidor.

Puedes encontrar un ejemplo en Magento_Backend/etc/adminhtml/system.xml:

<field id="base_url" translate="label comment" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Base URL</label>
    <backend_model>Magento\Config\Model\Config\Backend\Baseurl</backend_model>
    <comment>Specify URL or {{base_url}} placeholder.</comment>
</field>

Como puede ver, este campo tiene el modelo de back-end Magento\Config\Model\Config\Backend\Baseurl.
Esto significa que Magento\Config\Model\Config\Backend\Baseurl::beforeSavese llamará al método al guardar el campo. Puede usar este método para generar excepciones si algo está mal y la configuración no se guardará.

Puede crear su propio modelo que actúe como modelo de fondo para su campo.

Marius
fuente
4

prueba esto

 <field id="test" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Handling Fee</label>
                    <validate>required-entry</validate>
                </field>

ver la imagen a continuación se valida cuando presiono el botón Guardar.

ingrese el texto preformateado aquí

Bojjaiah
fuente
¿Cómo agregar una marca de asterisco (*) después de la etiqueta?
Rajeev Singh el
0

A continuación se muestra un ejemplo de Validación required-entryen system.xml, espero que te ayude:

<a2bizz_field_test>
    <label> Valor de texto </label>
    <frontend_type> texto </frontend_type>
    <validate> entrada obligatoria </validate>
    <sort_order> 5 </sort_order>
    <show_in_default> 1 </show_in_default>
    <show_in_website> 1 </show_in_website>
    <show_in_store> 1 </show_in_store>
</a2bizz_field_test>

para la validación personalizada, vaya a la siguiente URL:

http://alanstorm.com/magento_system_config_validation

amit_game
fuente
su respuesta es para magento 1. El operador le preguntó sobre magento 2
Marius
Oh ! Lo actualizaré pronto, gracias @Marius
amit_game