Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Beh la je crois que j'ai un probleme ... je me suis documenté mais vraiment je trouve pas ...
En gros mon formulaire a un bouton de validation et un bouton d'annulation.
voici un extrait du code de ma classe formulaire
$submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $back = new Zend_Form_Element_Submit('back'); $submit->setAttrib('id', 'back'); $back->setLabel('back'); $this->addElements(array($name, $zipcode, $country, $submit, $back));
et dans mon controlleur :
if ($form->getElement("back")->isChecked()) //l'utilisateur a cliqué sur le bouton "annuler" { // il faut revenir à la page précédente echo "dedededededededededededededededeeded <br>"; $this->gotoTowns(); } else {echo "ghhhhhhhhhhhhhhhhhhhhhhhhh <br>";} if ($form->getElement("submit")->isChecked()) //l'utilisateur a cliqué sur le bouton "annuler" { echo "dedededededededededededededededeeded <br>"; //interprétation des données du form } else {echo "ghhhhhhhhhhhhhhhhhhhhhhhhh<br>";}
je n'ai que "ghhhhhhhhhhhhhhhhhhhhhhhhh" qui s'affiche (a deux reprises)
si je fais un "$form->getElement("back")->setLabel('annuler');" la modification est bien prise en compte ...
En cherchant dans le code de la classe Submit j'ai trouvé ça :
public function isChecked() { $value = $this->getValue(); if (empty($value)) { return false; } if ($value != $this->getLabel()) { return false; } return true; }
cependant getValue() ne renvoie rien (pour les deux boutons et peu importe sur quel bouton je clique) ... ce qui expliquerait que mon isChecked renvoie tjrs faux ...
Bref, no comprendo ... y a surement qqch que je fais mal ...
edit : Modification du titre
Dernière modification par zanyth (18-07-2008 10:50:46)
Hors ligne
La méthode isChecked() n'est elle pas simplement réservé aux Checkbox ??
Moi perso je fais plus simple en faisant
if ($this->_hasParam('nomDuSubmit')) ...
Hors ligne
en fait j'ai tiré ça d'ici :
http://framework.zend.com/manual/fr/zen … nts.submit
voici l'extrait intéressant :
Zend_Form_Element_Submit uses the label as the "value" of the submit button, translating it if a translation adapter is present. isChecked() checks the submitted value against the label in order to determine if the button was used.
Peut etre l'ai je mal interprété ?!
edit : effectivement hasParam() fonctionne, merci ! :-)
Si vous avez des éclaircissements concernant isChecked() je suis preneur
Dernière modification par zanyth (18-07-2008 14:52:59)
Hors ligne
Hello,
Non, non pour la doc dépréciée (enfin pas à ma connaissance).
Je regarde le code initial et je vois :
$submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $back = new Zend_Form_Element_Submit('back'); $submit->setAttrib('id', 'back'); $back->setLabel('back');
au lieu de :
$submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $back = new Zend_Form_Element_Submit('back'); $back->setAttrib('id', 'back'); <-- $back $back->setLabel('back');
N'y aurait-il pas un soucis de ce côté ?
A+
Hors ligne
Quand tu cliques sur un bouton de formulaire, c'est
[name_du_bouton] => [value_du_bouton];
qui est envoyé
C'est donc cela qu'il faut tester
Hors ligne
$submit->setAttrib('id', 'back');
Argghhhhhhhhhhhhhhhhhh !!! Satané copier/coller !!
Je ne pense pas que ce probleme soit la cause du "bug" d'isChecked(), étant donné que, si j'ai bien compris la doc, tout se joue sur le Label (et non sur l'id qui est plus utilisé pour le CSS) non ?! (j'ai dailleurs testé et j'ai tjrs le pb)
Quand tu cliques sur un bouton de formulaire, c'est
[name_du_bouton] => [value_du_bouton];
qui est envoyé
C'est donc cela qu'il faut tester
cela correspond donc a utiliser hasParam() ?!
Personne n'a déjà utiliser isChecked() avec succès ?!
Hors ligne
en faisant une recherche sur comment ajouter une image a un submit je suis tombé sur ce lien ....
http://framework.zend.com/issues/browse/ZF-2465
.... qui parle d'une méthode isClicked() ...
Peut etre dans la doc y aurait il une confusion entre Checked et Clicked ?! Toujours est il que n'ayant pas la toute derniere version de Zend, cette méthode n'existe pas. Fonctionne t'elle chez vous ?!
Hors ligne
% cd /usr/local/share/ZendFramework/library/Zend % grep -R isClicked * %
J'ai la dernière version du framework et je n'ai pas une seule référence au mot 'isClicked' dans le code source de Zend.
A mon avis, cette fonction n'a pas encore été 'commité'
Hors ligne
Pour un info
isChecked est utiliser dans les elements :
- Checkbox
- Submit
- Image
le code Submit->isChecked :
public function isChecked() { $value = $this->getValue(); if (empty($value)) { return false; } if ($value != $this->getLabel()) { return false; } return true; }
En effet, le label est utilisé.
Donc, il faut que le label de ton submit et que la valeur soit identique.
->setLabel('Envoyer');
->setValue('Envoyer');
la, isChecked === true
Hors ligne
Pages: 1