Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je rencontre un problème de récupération des champs ne figurant pas dans le tableau $validators passé à Zend_Filter_Input :
1/
$filters = array(
'*' => 'StringTrim')
$validators = array(
'nom' => 'Alpha',
'prenom' => 'Alpha')
$input = new Zend_Filter_Input($filters, $validators, $form);
2/
$filters = array(
'*' => 'StringTrim')
$validators = array(
'nom' => 'Alpha')
$input = new Zend_Filter_Input($filters, $validators, $form);
Dans le cas 1/ $input->prenom renvoie bien la valeur filtrée et validée.
Dans le cas 2/ $input->prenom est null bien que valide.
Donc le fait d'avoir le champ 'nom' dans les validateurs semblerait imposer que le champ 'prenom' y soit aussi pour qu'il puisse être récupéré. Je dois faire une erreur quelque part car il va de soi qu'on souhaite appliquer les validateurs sur certains champs mais pas tous.
Avez-vous une idée ? Merci d'avance.
Harry
Hors ligne
Pas beaucoup de succès avec ma question. J'ai continué à réfléchir mais ne comprends pas le problème.
Si je passe $validators à null, je récupère bien mon champ $input->prenom.
Si $validators = array(
'nom' => 'Alpha'), mon champ $input->prenom récupéré est null.
Si $validators = array(
'nom' => 'Alpha',
'prenom' => 'Alpha'), mon champ $input->prenom est bien récupéré avec sa valeur filtrée.
Mais mon problème est que j'ai beaucoup de champs, certains devront passer par la validation mais pas tous... Et si je ne les fais pas apparaître dans $validators ils ressortent à null.
Une idée ?
Merci. Harry
Dernière modification par Harry (08-05-2009 19:00:14)
Hors ligne
Pour ceux que ça intéresse, j'ai trouvé une réponse ici : http://codeutopia.net/blog/2007/10/31/c … -problems/
On y lit :
"
If you pass an array to Zend_Filter_Input and try using the methods in it to get the data, you end up getting null values. But why?
Zend_Filter_Input will ignore all data that doesn't have a filter or a validator rule specified. Thus, it will give null values for every such field. You will need to add allowEmpty rules for the fields which have no other rules:
$validators = array(
'somefield' => 'Alpha',
'somefield2' => array('allowEmpty' => true),
'somefield3' => array('allowEmpty' => true)
);
Now you can use the methods in Zend_Filter_Input to get the rest of the fields.
"
Mon problème semble donc dû à une faiblesse de Zend_Filter_Input qui oblige donc à ajouter aux validateurs un "allowEmpty" à chacun des champs sous peine de les voir retourner à null. (L'ajout de toute autre règle résoud également le problème d'ailleurs).
Ainsi donc, on devrait voir apparaître chaque champ dans la liste des validateurs ??
Bizarre, bizarre... Si tel est le cas je m'empresserai d'abandonner ce composant pour retourner à Zend_Filter et Zend_Validator...
Mais j'ai encore du mal à croire à une telle négligence de la part des développeurs Zend.
++ Harry
Dernière modification par Harry (12-05-2009 22:52:52)
Hors ligne
Une dernière petite relance sur ce post qui n'a pas l'air d'inspirer grand monde.
Ma question est-elle sans intérêt ? Vous me faites douter car il m'étonne qu'elle n'intéresse personne. A moins que je ne passe à côté de quelque chose d'énorme comme ça m'arrive parfois...
++ Harry
Hors ligne
Pour évité ce probléme je fait un '*' => 'NotEmpty' dans mon validateur... C'est pas une réponse mais bon... J'ai également trouvé étrange de pas récupéré les autres éléments...
Hors ligne
Pages: 1