Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-07-2008 10:39:35

zanyth
Membre
Date d'inscription: 17-07-2008
Messages: 13

[Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

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

Code:

          $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 :

Code:

                         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 :

Code:

    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

 

#2 18-07-2008 14:28:28

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

La méthode isChecked() n'est elle pas simplement réservé aux Checkbox ??

Moi perso je fais plus simple en faisant

Code:

if ($this->_hasParam('nomDuSubmit')) ...

Hors ligne

 

#3 18-07-2008 14:48:26

zanyth
Membre
Date d'inscription: 17-07-2008
Messages: 13

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

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

 

#4 18-07-2008 18:09:16

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

Je dirais comme ça que la doc est déprécié ? smile

Hors ligne

 

#5 20-07-2008 15:29:01

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

Hello,

Non, non pour la doc dépréciée smile (enfin pas à ma connaissance).

Je regarde le code initial et je vois :

Code:

$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 :

Code:

$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+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 21-07-2008 10:11:31

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

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


----
Gruiiik !

Hors ligne

 

#7 21-07-2008 11:34:49

zanyth
Membre
Date d'inscription: 17-07-2008
Messages: 13

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

Code:

 $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

 

#8 21-07-2008 13:06:27

zanyth
Membre
Date d'inscription: 17-07-2008
Messages: 13

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

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

 

#9 21-07-2008 14:18:00

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

Code:

% 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é'


----
Gruiiik !

Hors ligne

 

#10 21-07-2008 17:04:37

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] plusieurs submit pour un form, isChecked ne fonctionne pas

Pour un info

isChecked est utiliser dans les elements :
- Checkbox
- Submit
- Image

le code Submit->isChecked :

Code:

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


----
Gruiiik !

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