IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Récupération de la valeur d'un select dans un formulaire [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 18
    Points : 17
    Points
    17
    Par défaut Récupération de la valeur d'un select dans un formulaire
    Bonjour,

    Je fais un formulaire de recherche sur une vue :
    mon formulaire ArgusSearchType.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
    namespace quad\MainBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class ArgusSearchType extends AbstractType
    {
       public function buildForm(FormBuilder $builder, array $options)
       {
           $builder
           		->add('annee', 'text',array('label'=>'Année','required'=>false))
           		->add('modele' ,'entity',array('class' => 'quad\\MainBundle\\Entity\\Modele','label'=>"Modele",'property' => 'modele','required'=>false))
           		->add('actif', 'choice',array('choices'=>array(0=>"Non",1=>"Oui"),'label'=>'Actif','required'=>false));
       }
     
       public function getName()
       {
           return 'argus_search';
       }
     
        public function getDefaultOptions(array $options)
        {
        	return array(
        'data_class' => 'quad\MainBundle\Entity\ArgusSearch',
        );
        }
    }
    Mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public function indexAction()
        {
     
            $em = $this->getDoctrine()->getEntityManager();
     
    		$entity = new ArgusSearch();
            $form = $this->createForm(new ArgusSearchType(), $entity);
     
            $request = $this->getRequest();
     
            $form->bindRequest($request);
     
        	if ($form->isValid() && $request->getMethod() == 'POST') {
    			$data = $form->getData();
    			$annee = $form["annee"]->getData();
    			$modeleId = $form["modele"]->getData();
    			echo "modeleId :$modeleId";
    			$actif = $form["actif"]->getData();
    			$entities = $em->getRepository('quadMainBundle:Argus')->findByFiltreArgus($annee,$modeleId,$actif);           
            }
            else{
            	$entities = $em->getRepository('quadMainBundle:Argus')->findAll();
            }
     
            return $this->render('quadMainBundle:Argus:index.html.twig', array(
                'entities' => $entities,
            	'form' => $form->createView()
            ));
        }
    ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    					<form action="{{ path('admin_argus') }}" method="post" {{ form_enctype(form) }}>
    				    <table width="100%">
    				    <tr>
    				    <td>{{ form_label(form.modele) }}</td>
    				    <td>{{ form_widget(form.modele) }}</td>
    				    <td>{{ form_label(form.annee) }}</td>
    				    <td>{{form_widget(form.annee) }}</td>
    				    <td>{{ form_label(form.actif) }}</td>
    				    <td>{{form_widget(form.actif) }}</td>
    				    <td><button type="submit">Filtrer</button></td>
    				    </tr>
    				    </table>
                	    {{ form_rest(form) }}
    				</form>
    Avec ce code je n'ai pas de problème lorsque je souhaite rechercher sur actif ou année. Par contre lorsque je souhaite rechercher sur un modèle ça ne fonctionne pas, je récupère pas la valeur de mon select mais la valeur affiché.

    Je ne vois pas ou est l'erreur, merci de votre aide.

    Olivier

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour
    ce que tu récupère dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modeleId = $form["modele"]->getData();
    c'est certainement un objet de classe Modele (ayant une méthode _toString )
    pour vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $modeleId = $form["modele"]->getData();
    echo get_class($modeleId);//devrait renvoyer  quad/MainBundle/Entity/Modele
    //NB tu peux aussi utiliser $this->get('logger')->info(blahblah) et consulter le résultat dans la web debug bar onglet "logs"
    modifie plutôt ta méthode de repository findByFiltreArgus

    tu peux passer directement des objets en parametre d'une requete DQL donc tu n'as pas directement besoin de la clé primaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function  findByFiltreArgus($annee,$modele,$actif){
     $qb=$this->createQueryBuilder('argus');
     if($modele){/*@var $modele quad/MainBundle/Entity/Modele*/
      $qb->andWhere('argus.modele=:modele')
          ->setParameter('modele',$modele);
     }
    //autre criteres
     return $qb->getQuery()->getResult();
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Merci Arno de t'être penché sur mon problème. J'ai suivi tes conseils et tout fonctionne ! merci beaucoup de ton aide.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Rechecher un contact dans une table
    je souhaite rechercher des infos dans une table
    Dans un premier temps je permet à l'utilisateur de saisir du text puis j'utilise cette valeur comme critère de recherche
    Je vous informe que je suis très debutant en symfony2, un coup de pouce me ferait du bien

    Ma route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    admin_argus:
        pattern: /rechercher
        defaults: { _controller: CnceAnnuaireBundle:Contact:rechercher2 }
        requirements:
          _method:  GET|POST
    mon controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public function Rechercher2Action()
        {
             $em = $this->getDoctrine()->getEntityManager();
     
            // création d'un nouveau objet Contact
    		$entity = new Contact();
            $form = $this->createForm(new ContactRechercheForm(), $entity);
            $request = $this->getRequest();
            $form->bindRequest($request);
         	if ($form->isValid() && $request->getMethod() == 'POST') {
    	    $data = $form->getData();
    	    $nom = $form["Nom"]->getData();
    	    $entities = $em->getRepository('CnceAnnuaireBundle:Contact')->findByFiltreArgus($nom);           
            }
            else{
            	$entities = $em->getRepository('CnceAnnuaireBundle:Contact')->findAll();
            }
             return $this->render('CnceAnnuaireBundle:Contact:index.html.twig', array(
                'entities' => $entities,
            	'form' => $form->createView()
            ));
        }
    et pour ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {% block body %}
    <h1>Recherche d'un contact</h1>
    <form action="{{ path('admin_argus') }}" method="post" {{ form_enctype(form) }}>
    <table width="100%">
        <tr>
            <td>{{ form_label(form.Nom) }}</td>
    	<td>{{ form_widget(form.Nom) }}</td>
    	<td><button type="submit">Filtrer</button></td>
        </tr>
    </table>
    {{ form_rest(form) }}
    </form>
    {% endblock%}
    Mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    namespace Cnce\AnnuaireBundle\Form;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    class ContactRechercheForm extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
    {
       // Champ de recherche full text
         $builder->add('Nom', 'text', array('label' => 'Indication'));
    }
        public function getName()
    {
        return 'contactrecherche';
    }
    public function getDefaultOptions(array $options)
        {
       return array(
        'data_class' => 'Cnce\AnnuaireBundle\Entity\Contact',
        );
        }
     
    }
    Mais malgré tout je n'arrive pas à faire executer la fonction bon du mois je ne vois pas de resultat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] récupération de la valeur d'un champ dans un formulaire
    Par guaguanco dans le forum IHM
    Réponses: 2
    Dernier message: 16/06/2010, 14h36
  2. récupération de la valeur d'une variable dans instruction select
    Par nicole.altuzarra dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/01/2009, 12h07
  3. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par Mimisator dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h51
  4. [sgbd] Recuperer valeurs d'un Select dans un tableau
    Par Mu_Belier dans le forum SGBD
    Réponses: 16
    Dernier message: 27/05/2005, 15h46
  5. récupérer la valeur d'un select dans un autre
    Par alexander dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2005, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo