Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-05-2013 17:44:44

Ramy
Membre
Date d'inscription: 19-02-2013
Messages: 24

zendform

bonjour , je vous demande just comment recuperer les valeurs  d'un select , un multicheckbox et un button radio dans zendframework2 , j'ai essayer les fonctions du tuto zf2 mais ca ne marche pas (ca me retourne des champs vides bien que mon formulaire est bien rempli et validé !


voila mon code de formulaire

Code:

[lang=php]<?php
namespace Auth\Form;
use Zend\Form\Form;
use Zend\Form\Element;
class AuthForm extends Form
{
public function __construct($name = null)
{
parent::__construct('album');
$this->setAttribute('method', 'post');

$this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'activites',
            
            'options' => array(
                'label' => '',
                'value_options' => array(
                    '1' => 'Selectionnez l\'activité',
                    '2' => 'Moyens de paiment',
                    '3' => 'Octroi des credits aux particuleirs',
                        ),
            ),
            ));
$this->add(array(
            'type' => 'Zend\Form\Element\MultiCheckbox',
            'name' => 'qualitatives',
            'options' => array(
                'label' => '',
                'value_options' => array(
                    '1' =>'Règlementaire',
                    '2' =>'Juridique',
                    '3' =>'Risque sur image banque',         ),
            ),
            
        ));

$this->add(array(
            'type' => 'Zend\Form\Element\Radio',
            'name' => 'perte',
            'options' => array(
                'label' => '',
                'value_options' => array(
                    '1' => 'Estimé',
                    '2' => 'Non estimé',
                ),
            ),
           
        ));    
        $this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Go',
'id' => 'submitbutton',
),
));

}
}

Merci par avance

Hors ligne

 

#2 06-05-2013 22:21:44

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zendform

Salut, il nous faudrait un peu plus de détail parce que là on voit pas comment tu récupères les données wink

Hors ligne

 

#3 07-05-2013 10:38:45

Ramy
Membre
Date d'inscription: 19-02-2013
Messages: 24

Re: zendform

voila la fonction qui (supposée) recuperer les données dans mon controlleur

Code:

[lang=php]public function formAction()
{

$form =new AuthForm;

$form->get('submit')->setValue('Enregistrer');



        $request = $this->getRequest();
        if ($request->isPost()) {
            $incident = new Incident();
            
            $form->setData($request->getPost());
 
            if ($form->isValid()) {
$artiste = $this->getRequest()->getPost('rapporteur');
return new ViewModel(array(
            'form' => $form
        ));
        
        
        }

donc je recupere les données champs par champs , la ligne
$artiste = $this->getRequest()->getPost('rapporteur');
récupère la valeur de rapporteur (qui un de type text) et ca marche , mais pour les autres (radio, multichecbox ...) j'ai pas trouver la fonction qui permet de récupérer les données (les valeurs sélectionnées)


Merci

Hors ligne

 

#4 07-05-2013 12:56:10

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zendform

Salut bon déjà je suis pas sûr que tu ais lu la documentation sur les formulaires sinon tu aurais déjà trouvé ta réponse wink.

Avant de te répondre je vais juste te faire remarquer quelques incohérences dans ton code. Tout d'abord tu stockes le résultat de la requête dans la variable $request mais pourquoi à $artiste tu n'utilises pas de nouveau ta variable $request ?

Ensuite je ne comprend pas ce que viens faire la création de l'objet Incident vu que tu ne t'en sert pas.

Enfin pour récupérer les données du formulaire tu les récupères depuis le formulaire et non pas depuis la requête puisque lorsque tu fais le setData tu affectes effectivement les données de la requête au formulaire (ce qu'il faut faire donc là c'est bon). Ensuite la fonction isValid va passer les validateurs et les filtres que tu as déclaré dans ton formulaire. Si c'est validé tu peux récupérer les données de ton formulaire comme ceci : $form->getData()

Hors ligne

 

#5 07-05-2013 17:23:34

Ramy
Membre
Date d'inscription: 19-02-2013
Messages: 24

Re: zendform

Merci okrin

le code que j'ai mis est une partie de la fonction , j'ai pas mis la totalité du code car c'est trop long (une dizaine de recuperation de textfield et une utilisation de PHPExcel , et concernant $form->getData() ça me récupère tout les données depuis le formulaire mais j'aime bien les récupérer un par un . je m'explique : par exemple pour récupérer juste la valeur de

"activites" qui est de type  'Zend\Form\Element\Select',(décrit dans mon premier post)

j'ai fait $SelectVal=$this->getRequest()->getPost('activites');  et ça me donne rien (une valeur vide ... j’espère que j'ai bien reposé la question et merci pour votre aide smile

Hors ligne

 

#6 07-05-2013 19:38:17

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zendform

Ramy a écrit:

concernant $form->getData() ça me récupère tout les données depuis le formulaire mais j'aime bien les récupérer un par un . je m'explique : par exemple pour récupérer juste la valeur de

"activites" qui est de type  'Zend\Form\Element\Select',(décrit dans mon premier post)

j'ai fait $SelectVal=$this->getRequest()->getPost('activites');  et ça me donne rien (une valeur vide ... j’espère que j'ai bien reposé la question et merci pour votre aide smile

Donc déjà ton problème ne concerne plus la même chose mais bien la récupération manuelle d'un élément d'un formulaire. Je comprend pas trop pourquoi te faire chier à écrire 10 lignes de codes alors qu'une seule suffit pour tout récupérer d'un coup. Ensuite tu stockes le tableau ou l'objet qui t'es retourné par le formulaire (suivant si tu utilises les hydrateurs ou non) dans une variable et tu récupères manuellement chacun des attributs avec $monArray['monelement'].

Encore une fois je me répète, je t'encourage à aller lire la doc tu as TOUTES les réponses à tes question et bien lire ce qu'on te met wink. Si tu récupères les données depuis la requête comme tu le fais le formulaire n'a plus aucun intérêt puisque c'est à partir de ces données là qu'il va faire les traitements de validation et filtrage. Donc là tu récupères des données valides certes vu que tu le fais après le isValid mais elles ne sont pas filtrées. Du genre si tu as un filtre qui met une majuscule en début de mot bah il sera pas pris en compte vu que tu vas chercher la valeur ailleurs.

Hors ligne

 

#7 08-05-2013 00:46:20

Ramy
Membre
Date d'inscription: 19-02-2013
Messages: 24

Re: zendform

ok merci okrin pour ton aide mais juste je t'informe que je dois récupérer les données une par une car j'injecte les valeurs dans un tableau excel dans des colonnes précises via PHPExcel (lit la documentation PHPExcel et tu comprendra de quoi je parle) , et a propos la doc de zf2 j'ai dit que j'ai  bien lu la doc et les fonctions ne marche pas . et même le faite de récupérer toute les données ensemble et les mettre dans une variable puis les utiliser  une par une  ça ne marche pas car en récupérant les données (en totalité) les champs de select et multichekbox et le button radio sont aussi vide .

Dernière modification par Ramy (08-05-2013 00:47:30)

Hors ligne

 

#8 08-05-2013 12:28:54

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zendform

Bah faut savoir :

Ramy a écrit:

concernant $form->getData() ça me récupère tout les données depuis le formulaire

et après :

Ramy a écrit:

et même le faite de récupérer toute les données ensemble et les mettre dans une variable puis les utiliser  une par une  ça ne marche pas car en récupérant les données (en totalité) les champs de select et multichekbox et le button radio sont aussi vide .

Si tu ne donnes pas les bonnes informations c'est pas facile de t'aider ... Chez moi tout fonctionne pour la récupération de la valeur d'un select. Ensuite même si tu as besoin d'utiliser les données une par une par la suite ce qu'on a tous besoin de faire à un moment donné sauf si l'on passe par un hydrateur et que l'on a pas besoin de plus que l'objet retourné par le formulaire. Donc la solution de tout récupérer puis de parcourir les éléments un à un devrait être la bonne.

Je te suggère aussi d'utiliser FormElementManager depuis le service manager pour créer ton formulaire. De plus peux-tu indiquer comment tu affiches le formulaire dans ta vue avec l'action qui le fait si ce n'est pas la même que ce que tu as déjà donné.

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