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?
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?
Réponses:
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-number
des valeurs alphanumériques et numériques dans la balise de validation.
Merci.
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::beforeSave
sera 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.
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.
Voici un exemple de validation pour required-entry
en 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 -