Valeurs vides transmises aux valideurs Zend Framework 2
Comment puis-je passer un vide valeur par le biais du Zend framework 2 ValidatorChain à mon validateur personnalisé?
Il a été possible sur ZF1 par allowEmpty(false)
Sur ZF2 avec vide la valeur de l'élément :
- Si
allowEmpty = false
NotEmptyValidator est ajouté en haut de ValidatorChain avecbreakOnFailure = true
@see Zend/InputFilter/Input#injectNotEmptyValidator
. - Si
allowEmpty = true
l'Élément est considéré comme Valable,@see Zend/InputFilter/BaseInputFilter#isValid
if ($input->allowEmpty()) { $this->validInputs[$name] = $input; continue; }
source d'informationauteur deyine
Vous devez vous connecter pour publier un commentaire.
Suite à des travaux de ZF2 la version 2.1.1:
Le problème (si j'ai correctement), c'est que dans l'exemple suivant, pour des valeurs vides de
'fieldName'
aucune validation n'est déclenchée. Cela peut être assez ennuyeux, mais dansC'est assez gênant quand vous avez des cas particuliers, comme la vérification de l'URL d'une page dans votre CMS et en évitant les collisions vide (l'URL est toujours une URL!).
Il y a un moyen de la manipulation de ce pour les cordes à vide, qui est essentiellement de fixer le
NotEmpty
validateur sur votre propre, et d'éviter les appels àsetRequired
etsetAllowEmpty
. Ce sera essentiellement direZend\InputFilter\Input#injectNotEmptyValidator
de ne pas utomatically joindre unNotEmpty
validateur sur son propre:Si vous aussi vous voulez vérifier contre
null
vous aurez besoin d'étendreZend\InputFilter\Input
comme suit:continue_if_empty
résolu mon problème. Grâce à @dson-horácio-junior. C'est ce que j'ai utilisé:Ce qui a provoqué la validation de mon
Callback
validateur lorsque la valeur est une chaîne vide:La
allow_empty
initialement invalide la chaîne vide et lecontinue_if_empty
lui permet d'être ensuite évaluées par les validateurs qui suivent.Je vois souvent des gens qui font de l'erreur à l'aide de
allowEmpty
dans le inputFilter config tableaux. La chaîne doit être écrit avec un trait de soulignement de séparation pas de chameau cas. Doncallow_empty
:sens d'un champ avec la touche "fieldName" doit être présent dans les données, mais sa valeur peut être vide.
Si vous souhaitez utiliser un formulaire distinct de valider une classe ou à un tableau de notation pour les valider, vous pouvez le faire comme suit:
Vous pouvez passer un tableau avec
required => false
etallowEmpty => true
de filtre d'entrée de l'usine (comme je me souviens, vous pouvez passer directement à l'entrée du filtre de trop - pas si sûr).