Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2010, 12h18   #1
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
Par défaut Contrôle checkbox

Bonjour,
Je dispose d'un formulaire (voir.phtml) dans lequel j'ai inséré une checkbox qui permet de valider des CGU :

Code :
<input type='checkbox' name='cgu'><a href='<?php echo $this->baseUrl ?>/pay/cgu' target='_blank'>J'ai lu et accepté les conditions générales de ventes</a>
Le bouton qui apparaît ensuite pour valider le formulaire est construit dans le controller via Zend_Form.

J'aimerais savoir s'il est possible de vérifier dans le controller que le checkbox est bien coché, si oui, comment le faire ?

D'avance merci.
Vincent
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 17h42   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
deux possibilités :
- tu as créé ta checkbox en utilisant Zend_Form_Element_Checkbox. Dans ce cas, il existe une fonction isChecked() qui regarde si la case est cochée ou non.

- tu as écrit ta checkbox à la main en html. Dans ce cas, on revient au bon vieux principe qui dit qu'une checkbox non cochée n'est pas envoyée par le formulaire. Donc si tu as une valeur dans $_POST['cgu'], c'est qu'elle est cochée
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 10h31   #3
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
merci.
j'ai utilisé le
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 11h54   #4
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
je me permets de revenir sur le sujet, car l'interception de $_POST['cgu'] fonctionne, mais je n'arrive pas à interpréter son contenu pour rediriger dans un sens ou l'autre

J'ai tenté les codes suivants :
Code php :
1
2
- if (!empty($_POST['cgu'])) --> coché ou non, même résultat
- if (!isset($_POST['cgu'])) --> coché ou non, même résultat

J'ai tenté également de tester si la valeur est "" .. rien non plus.

Auriez-vous la solution car je ne comprends plus.
Merci.
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 11h56   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
normalement isset devrait fonctionner.
Essaye de faire un print_r de $_POST pour voir ce qu'il y a dedans...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 12h12   #6
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
ma variable est vide, je ne comprends pas pourquoi...
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 13h44   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Bon sang mais c'est bien sûr : il n'y a pas de value dans ta checkbox. Donc forcément rien n'est envoyé....
Code html :
<input type='checkbox' name='cgu' value="1" />
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h34   #8
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
ok, je rajoute l'attribut , mais la valeur va changer si je check la case ?
merci.
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h40   #9
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Ben logiquement, lorsque la case sera cochée tu recevras, et non cochée tu ne recevras rien (à tester avec isset donc)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h50   #10
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
je ne comprends pas, c'est normalement très simple, et ça ne fonctionne toujours pas.
J'écris dans un fichier le contenu des variables et , et c'est toujours blanc, malgré que je coche la case dans le formulaire.
Je ne sais plus trop où chercher ...
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h24   #11
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
Celira ? plus d'idées?

Si cela peux aider, voici mon code :

dans mon controller, pour la construction du form :

Code :
1
2
3
4
5
6
7
		$form->setMethod('post')
			 ->setAttrib("target","_self")
		   ->setAction(ROOT_URL . '/pay')
		   //->addElement($cgu)
		   ->addElement('submit', 'Accéder à la plateforme , array('label' => 'Accéder à la plateforme'))
		   ->addElement($idElement)
		   ->addElement($keyElement);
Pour le checkbox, il est déjà présent dans le post, donc je ne le remet pas.

Ensuite, dans le même controller pour récupérer la valeur du checkbox :

Code :
1
2
3
4
 
if($_POST['cgu'])== "1"){
         $this->_redirect('/error/cgu');
      }
Je me suis trompé quelque part ?
merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h30   #12
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Vérifie tes parenthèses :
Code :
if($_POST['cgu']== "1"){
Mais là tu va rediriger si la case est cochée...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h36   #13
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
effectivement, il y avait une erreur de parenthèsses.
j'ai mis ceci :

Code :
1
2
3
if($_POST['cgu'] != "1"){
         $this->_redirect('/error/cgu');
      }
et malgré ça, je suis systématiquement revoyer sur /error/cgu ...
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h47   #14
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
N'ayant pas de solution, je tente d'une façon différente :

Code :
1
2
3
4
5
6
7
8
9
10
->addElement(
            'CheckBox',
            'cgu',
            array(
              'label' => 'I accept CGU',
              'style' =>'margin-left:100px;',
              'required' => true,
              'checkedValue' => '1'
              )
        )
Malheureusement, ça ne me donne rien non plus... moi qui croyait qu'il était simple d'utiliser une case à cocher ...
je préfère les développements web sans framework ...

Je dispose un controlle avec plusieurs méthodes

dont une "voirAction" :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 $form = new Zend_Form();
		$idElement = $form->createElement('hidden', 'id')->setValue($id);
		$keyElement = $form->createElement('hidden', 'key')->setValue($key);
 
 
     $form->setMethod('post')
			 ->setAttrib("target","_self")
		   ->setAction(ROOT_URL . '/pay')
		   ->addElement(
            'CheckBox',
            'cgu',
            array(
              'label' => 'I accept CGU',
              'style' =>'margin-left:100px;',
              'required' => true,
              'checkedValue' => '1'
              )
        )
		   ->addElement('submit', 'Accéder à la plateforme ', array('label' => 'Accéder à la plateforme'))
		   ->addElement($idElement)
		   ->addElement($keyElement);
 
		$this->view->form = $form;
		$this->view->dp = $dp;
Puis la méthode "indexAction" appelé par le submit du formulaire :
Code :
1
2
3
if(!isset($_POST['cgu']) && $_POST['cgu'] != "1"){
        $this->_redirect('/error/cgu');
      }
quand je vérifie le contenu de $_POST['cgu'], je n'ai rien, que la case soit cochée ou non.

Auriez-vous une idée avec ces éléments?
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h58   #15
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 315
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 315
Points : 80
Points : 80
sinon, autre solution : est-ce possible de faire apparaître le bouton de validation seulement après avoir coché la case ? en gros, dès que l'utilisateur coche la case, faire apparaître le bouton.
Si possible, pourriez-vous m'expliquer comment faire ?
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web