


PHP Master | Définition des messages d'erreur personnalisés pour zend_form_element
Les plats clés
- Lors de la création d'un site Web ou d'une application non anglophone basé sur le framework Zend, les développeurs ont souvent du mal à marquer un champ de Zend_Form, qui est un Zend_Form_Element, comme invalide et affichant des messages d'erreur personnalisés. Cela est principalement dû aux méthodes contre-intuites natives de la classe zend_form_element.
- Le comportement par défaut du framework Zend, appartenant à la société américaine Zend, consiste à afficher les messages d'erreur en anglais pour chaque validateur brisé par entrée utilisateur. Les développeurs peuvent soit traduire chaque message d'erreur du cadre ou expliquer dans un ou plusieurs messages que l'entrée n'est pas valide et afficher des suggestions pour insérer une valeur acceptée. Cette dernière option est moins compliquée, en particulier pour les petits et moyens projets.
- La solution à ce problème réside dans la création du champ à l'intérieur de la méthode Form (init ()) et l'utilisation de la méthode SetErrorMessages () en conjonction avec une propriété des validateurs du framework Zend appelé BrekchainOnFailure (). Cette propriété permet au processus de validation de s'arrêter à la première condition échouée. Cette approche permet au formulaire d'afficher uniquement le message personnalisé lorsqu'il y a une entrée non valide.
Développer un exemple
Disons que vous avez un formulaire avec différents champs et prenez en compte un seul d'entre eux, par exemple un champ de saisie de texte utilisé pour permettre à un utilisateur de saisir son nom. Les validateurs que vous pouvez utiliser sont différents, mais par exemple, nous limiterons la longueur du nom et ne permettra que des caractères et des espaces alphabétiques. En parlant de la langue du framework Zend, nous utiliserons respectivement les classes zend_validate_stringlength et les classes zend_validate_alpha. Comme vous le savez peut-être déjà, Zend Framework appartient à la société américaine Zend et donc tous les messages qu'il montre en anglais. Le comportement par défaut du framework consiste à afficher un ou plusieurs messages d'erreur pour chaque validateur rompu par l'entrée utilisateur. Ainsi, pour ceux qui construisent un site Web non anglais, il existe deux options pour que les messages lisibles par tous les utilisateurs: traduisez chaque message d'erreur du cadre, ou expliquer dans un ou plusieurs messages que l'entrée est invalide et affiche des suggestions pour insérer une valeur acceptée. La première option est trop compliquée, en particulier pour les petits et moyens projets, donc je vais montrer comment utiliser la deuxième option. Pour rester facile, nous définirons un seul message personnalisé: «L'entrée n'est pas valide. La valeur ne doit avoir que des caractères alphabétiques et des espaces et sa longueur doit être comprise entre 3 et 50 caractères. "le code
Je vais montrer le code que nous utiliserons pendant l'article. Tout d'abord, c'est le formulaire qui contient le champ de saisie du nom et les validateurs nécessaires pour vérifier les données.<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
Analyse des méthodes du cadre
Une bonne question à poser est de savoir s'il existe déjà des méthodes disponibles pour faire face à ce type de situation. La réponse est presque . Je veux dire qu'il existe des méthodes, mais ils ne fonctionnent pas toujours comme vous vous y attendez (du moins comme je m'attends). Les méthodes pour gérer les messages d'erreur sont:- setErrors (array $ messages)
- SetTerrorMessages (Array $ messages)
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>// set the custom message in the case of an error </span></span><span><span>$element->setErrors(array("The input is invalid. The value must have only alphabetic characters and spaces and its length must be between 3 and 50 characters."));</span></span>
Découvrir la solution
Maintenant, le but est de comprendre quand et comment Pour insérer le message personnalisé afin que l'utilisateur puisse avoir une comparaison et une suggestion sur les valeurs acceptées. Certainement, le moment réside dans la création du champ à l'intérieur de la forme (init () méthode) et le comment est dû à l'union de la méthode SetErrorMessages () et à l'utilisation d'une propriété des validateurs du cadre Zend appelé BreakchainOnfailure () . Ce dernier nous permet d'arrêter le processus de validation à la première condition échouée. Si nous créons cinq validateurs mais que les premiers échouent, les quatre autres ne seront pas utilisés. Pour utiliser cette propriété en utilisant le plus petit nombre possible de lignes de code, je vais changer un peu le code que j'ai illustré au début. J'ajouterai à la méthode init () la ligne de code qui utilise la méthode SetTerrorMessages (), et je profiterai de l'une des configurations d'entrée possibles acceptées par setValidators () qui attend un tableau de tableaux. Le tableau contenu dans le principal peut avoir un maximum de trois paramètres, qui sont:- une chaîne (obligatoire) pour spécifier le validateur à l'utilisateur.
- Un booléen (facultatif, par défaut, sa valeur est fausse) pour spécifier si le cadre doit casser la validation au premier échec ou non. Ainsi, ce paramètre définit la valeur de la propriété BreakchainOnfailure, ce qui nous aidera à atteindre notre objectif.
- Un tableau d'options (facultatif, par défaut, un tableau vide) différent pour chaque validateur choisi
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
Conclusion
En utilisant le code ci-dessus, le formulaire affichera uniquement le message personnalisé lorsqu'il y a une entrée non valide… exactement ce que nous voulions! Dans le cas où vous avez besoin d'utiliser plus de messages, par exemple des suggestions en plusieurs étapes, ajoutez simplement plus de chaînes au tableau utilisé pour la méthode SetTerrorMessages (). Image via FotoliaQuestions fréquemment posées (FAQ) sur la définition des messages d'erreur personnalisés pour l'élément de formulaire zend
Comment puis-je personnaliser le message d'erreur pour un élément de formulaire spécifique dans Zend?
La personnalisation du message d'erreur pour un élément de formulaire spécifique dans Zend est assez simple. Vous pouvez utiliser la méthode setMessage () pour définir un message d'erreur personnalisé pour un validateur spécifique. Par exemple, si vous avez un élément de formulaire nommé 'Email' et que vous souhaitez définir un message d'erreur personnalisé pour cela, vous pouvez le faire comme suit:
$ e-mail = new Zend_form_Element_text ('e-mail');
$ email-> setLabel ('Adresse e-mail')
-> addValidator ('NOTEMPTY', true)
-> addValidator ('e-mailaddress');
$ e-mail-> getValidator ('NOTEMPTY') -> setMessage ('Veuillez saisir votre adresse e-mail');
Dans cet exemple, la méthode SetMessage () est utilisée pour Définissez un message d'erreur personnalisé pour le validateur «Notempty» de l'élément de formulaire «e-mail».
Comment puis-je définir plusieurs messages d'erreur personnalisés pour un élément de formulaire dans Zend?
Si vous souhaitez définir plusieurs messages d'erreur personnalisés pour un élément de formulaire dans Zend, vous pouvez utiliser la méthode SetMessages (). Cette méthode accepte un tableau de messages d'erreur. Voici un exemple:
$ email = new Zend_form_element_text ('e-mail');
$ email-> setLabel ('Adresse e-mail')
-> addValidator ('NOTEMPTY', true)
-> addvalidator ('e-mailaddress');
$ e-mail-> getValidator ('NOTEMPTY') -> setMessages (array (
zend_validate_notempty :: is_empty => 's'il vous plaît entrez votre adresse e-mail',
zend_valida_emailaddress: : Invalid => 'Veuillez saisir un e-mail valide Adresse '
));
Dans cet exemple, la méthode SetMessages () est utilisée pour définir plusieurs messages d'erreur personnalisés pour le validateur "NotherMpty" de l'élément de formulaire "Email".
Comment puis-je afficher un message d'erreur personnalisé lorsqu'un formulaire échoue à la validation dans Zend?
Lorsqu'un formulaire échoue à la validation dans Zend, vous pouvez afficher un message d'erreur personnalisé en utilisant la méthode Adderror (). Cette méthode ajoute un message d'erreur qui sera affiché lorsque le formulaire échoue à la validation. Voici un exemple:
$ form = new Zend_form ();
$ form-> addElement ('text', 'e-mail', array (
'validators' => array (
Array ('Validator' => 'NOTEMPTY', 'OPTIONS' => Array ('Messages' => 'Email est requis')),
array ('validator' => 'EmailAddress', 'Options' => Array ('Messages' => 'Adresse e-mail non valide'))
)
));
if (! $ Form-> isvalid ($ _ post)) {
$ form-> adderror ('il y avait des erreurs dans votre soumission. Veuillez les corriger et réessayer.');
}
Dans cet exemple, le La méthode Adderror () est utilisée pour ajouter un message d'erreur personnalisé qui sera affiché lorsque le formulaire échoue la validation.
Comment puis-je modifier les messages d'erreur par défaut dans Zend?
Vous pouvez modifier le défaut par défaut Messages d'erreur dans Zend en utilisant la méthode setMessage (). Cette méthode vous permet de définir un message d'erreur personnalisé pour un validateur spécifique. Voici un exemple:
$ email = new Zend_form_element_text ('e-mail');
$ email-> setLabel ('Adresse e-mail')
-> addValidator ('NOTEMPTY', true)
-> addvalidator ('e-mailaddress');
$ e-mail-> getValidator ('NotherMpty') -> setMessage ('Veuillez entrer votre adresse e-mail');
$ email-> getValidator ('emailDdress') -> setMessage ('Veuillez entrer une adresse e-mail valide');
Dans cet exemple, la méthode setMessage () est utilisée pour modifier les messages d'erreur par défaut pour le Les validateurs de «notempty» et «e-mail» de l'élément de formulaire «e-mail».
Comment puis-je définir un message d'erreur personnalisé pour un élément de formulaire requis dans Zend?
Si un élément de formulaire est requis dans Zend, vous pouvez définir un message d'erreur personnalisé pour lui en utilisant les méthodes setRequired () et adderrorMessage (). Voici un exemple:
$ email = new Zend_form_Element_text ('e-mail');
$ e-mail-> setLabel ('Adresse e-mail')
-> setRequired (true)
-> adderrorMessage («E-mail est requis»);
Dans cet exemple, la méthode setRequired () est utilisée pour rendre l'élément de formulaire «e-mail» requis, et le La méthode AdderrorMessage () est utilisée pour définir un message d'erreur personnalisé pour celui-ci.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
