Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
[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
Salut, il nous faudrait un peu plus de détail parce que là on voit pas comment tu récupères les données
Hors ligne
voila la fonction qui (supposée) recuperer les données dans mon controlleur
[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
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 .
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
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
Hors ligne
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
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 . 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
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
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