Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-12-2010 14:29:27

web2h
Nouveau membre
Date d'inscription: 15-12-2010
Messages: 8

Element Zend Hash ne passe pas la validation

Bonjour,

J'ai des problèmes avec l'élément Hash de Zend, il ne passe pas l'étape de validation

Voici ma classe de formulaire

Code:

 
$hash = new Zend_Form_Element_Hash("hash", "no_csrf", array("salt" => "unique"));
...
$this->addElements(array($hash, ...));

Ca ne valide pas, donc j'ai ajouté des lignes pour sauvegarder un salt en session

Code:

$hash = new Zend_Form_Element_Hash("hash", "no_csrf", array("salt" => "unique"));
$session = Zend_Registry::get("session")
$session->no_csrf = md5(uniqid ("125fds8987f13", true));
Zend_Registry::set("session", $session);
$hash->setValue($session->no_csrf );

Mais toujours rien.

Qu'est ce qui'l me manque?

Hors ligne

 

#2 28-12-2010 17:26:21

web2h
Nouveau membre
Date d'inscription: 15-12-2010
Messages: 8

Re: Element Zend Hash ne passe pas la validation

Bon, je n'arrive toujours à rien.
J'ai regardé un paquet de tutoriels sur comment utiliser l'élément hash dans un formulaire ZEND.

Y'a rien à faire, y'a un truc que je ne dois pas comprendre, ça ne valide jamais.
Y'a t'il quelque chose à faire au niveau du controller au moment de la validation?

Merci d'avance pour la moindre aide, elle sera bénéfique dans tous les cas

Hors ligne

 

#3 28-12-2010 17:38:54

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Element Zend Hash ne passe pas la validation

Tu n'as rien à mettre en session, la validation se fait automatiquement. Voici comment j'ajoute (je passe par la fonction createElement mais tu peux le modifier en utilisant la création explicite) :

Code:

$hash = $this->createElement('Hash', 'hash');
$hash->setSalt(uniqid())
         ->setIgnore(true);

$this->addElement($hash);

Le setIgnore est facultatif, il te permet juste d'éviter de récupérer la valeur du hash quand tu fais un getValues() sur le form (le isValid te la validera quand même).

Normalement ton code devrait marcher aussi, par contre en assignant "unique" comme valeur, ton salt sera toujours identique, pas sûr que ça soit très utile smile. (à moins que unique soit une fonction PHP que j'ignore ? smile)

Sinon, autre hypothèse : utilises-tu le décorateur ViewScript ? Auquel cas, il faut que tu affiches également l'élément dans ton fichier.

Hors ligne

 

#4 28-12-2010 17:47:11

web2h
Nouveau membre
Date d'inscription: 15-12-2010
Messages: 8

Re: Element Zend Hash ne passe pas la validation

Merci Bakura pour la réponse.

Ta solution ressemble à ce que j'ai déjà testé.
Mais par contre ton hypothèse sur le décorateur viewscript m'intéresse.
En effet, je l'utilise.
Par contre, je ne suis pas sur de comprendre ce que tu me demandes de faire.
Le fichier que tu mentionnes, c'est le script du formulaire? si oui comment je fais ça?
parce que dans le code HTML qui s'affiche à l'écran, j'ai bien

Code:

<input type="hidden" name="hash" value="" id="hash" />

Tu me parles surement de l'attribut value qui est vide.

Hors ligne

 

#5 28-12-2010 20:57:32

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Element Zend Hash ne passe pas la validation

C'est pas normal qu'il soit vide, il doit avoir une valeur.

Ce que je veux dire par là, c'est qu'il faut bien l'afficher, en faisant un :

Code:

echo $this->element->hash->renderViewHelper(); ?>

dans ton script. (remplacer hash par le nom que tu as donné, en l'occurence no_csrf). Normalement tu devrais bien avoir un input de type hidden MAIS avec une valeur !

Hors ligne

 

#6 29-12-2010 11:17:35

web2h
Nouveau membre
Date d'inscription: 15-12-2010
Messages: 8

Re: Element Zend Hash ne passe pas la validation

En 1 mot :

merci !!

Hors ligne

 

#7 29-12-2010 19:04:30

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Element Zend Hash ne passe pas la validation

De rien smile.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages