Magento 2: validation de la configuration enregistrée system.xml


9

J'ai développé une extension pour Magento2 qui enregistre les configs en utilisant un system.xml et je voudrais valider les valeurs entrées par l'utilisateur. Comment puis-je valider ces valeurs?


Quel type de valeurs vous souhaitez valider, si les valeurs sont dénombrables, essayez d'utiliser la liste déroulante et restreignez l'utilisateur.
amit_game

@amit_game malheureusement, ce sont des champs de saisie pour le texte et j'ai besoin d'une validation personnalisée (au moins que l'entrée n'est pas nulle)
Omry Zobel

Réponses:


13

Vous pouvez appliquer la validation sur la zone de texte dans magento 2 comme ceci,

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

Vous pouvez conserver validate-alphanum or validate-numberdes valeurs alphanumériques et numériques dans la balise de validation.

Merci.


8

vous pouvez attacher un modèle backend au champ et vous pouvez valider le côté serveur de valeur.

Vous pouvez trouver un exemple dans 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>

comme vous pouvez le voir, ce champ a le modèle backend Magento\Config\Model\Config\Backend\Baseurl.
Cela signifie que la méthode Magento\Config\Model\Config\Backend\Baseurl::beforeSavesera appelée lors de l'enregistrement du champ. Vous pouvez utiliser cette méthode pour lever des exceptions si quelque chose ne va pas et que la configuration ne sera pas enregistrée.

Vous pouvez créer votre propre modèle qui agit comme un modèle backend pour votre domaine.


4

essaye ça

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

voir l'image ci-dessous, il est validé lorsque je clique sur le bouton Enregistrer.

entrez le texte préformaté ici


comment ajouter un astérisque (*) après l'étiquette?
Rajeev Singh

0

Voici un exemple de validation pour required-entryen system.xml, j'espère que cela vous aidera -

<a2bizz_field_test>
    <label> Valeur texte </label>
    <frontend_type> texte </frontend_type>
    <validate> required-entry </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>

pour une validation personnalisée, passez par l'URL ci-dessous -

http://alanstorm.com/magento_system_config_validation


votre réponse est pour magento 1. L'op a posé des questions sur magento 2
Marius

oh! je vais le mettre à jour bientôt, merci @Marius
amit_game
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.