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 :

L'action rechercher, impossible de récupérer la valeur recherchée [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut L'action rechercher, impossible de récupérer la valeur recherchée
    Bonjour,
    Je travaille depuis 2 jours sur une fonctionnalité de recherche dans mon application. Je n'arrive pas à récupérer la valeur entrée dans le formulaire même si j'ai utilisé l'objet request comme dans la doc officielle. Quand je ne passe pas par le formulaire la requête dans le repository marche bien et la vue m'affiche le résultat comme attendu, je ne comprends pas d’où cela peut venir...

    Voici un aperçu de mon code :
    Le formulaire de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('value', 'text', array('property_path'=>false));
        }
    La requête dans le repository:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    public function getSearchList ($formvalue) 
    	{
     
    		$qb = $this->createQueryBuilder('t');
     
    		$qb->where('t.priorite = :formvalue')
    		     ->setParameter('formvalue', $formvalue);
     
    		return $qb->getQuery()->getResult();
    	}
    Mon action dans le contrôleur, et là ou, je crois, il y a le problème :

    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
    31
    <?php
    /**
         * Lists all Tache entities.
         *
         * @Route("/", name="tache")
         * @Template()
         */
        public function indexAction()
        {	
     
    		$request = $this->get('request');   
     		$formvalue= $request->request->get('value');  /*Cette ligne censé récupérer la valeur ne marche pas, quand je fais par exemple $formvalue=3; j'ai le resultat attandu */
    		$tache = new Tache();
    		$search_form=$this->createForm(new RechercheType(), $tache);
    		if($request->getMethod()=='POST')
    		{
     
    				$em = $this->getDoctrine()->getEntityManager(); 
    				$taches = $em->getRepository('spTacheBundle:Tache')->getSearchList($formvalue);
    		}
    		else
    		{
            $em = $this->getDoctrine()->getEntityManager();
     
            $taches = $em->getRepository('spTacheBundle:Tache')->findAll();
    		}
            return array(
                'taches' => $taches,
    			'formvalue' => $formvalue,
                'search_form' => $search_form->createView()
            );
    Et finalement le bout de la vue qui contient le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h1>Tache list {{formvalue}}</h1>
    <form action="{{ path('tache') }}" method="post" >
     {{form_widget(search_form) }}
     <p>
            <button type="submit">search</button>
        </p>
    </form>
    Si vous avez une réponse à ce problème je serais reconnaissant, merci beaucoup

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ça ne marche pas comme ça, faut faire un $form->bindRequest($request); et recupere la valeur du formulaire

    ps : pour $this->get('request') direct $this->getRequest()

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Merci énormément pour ta réponse
    Dans mon cas j'ai crée un formulaire qui ne se base sur aucune entité et je l'ai appelé dans ma vue twig; ce que j'aimerais faire c'est quand je rentre une valeur dans le champ de recherche (value), pouvoir récupérer cette valeur via le contrôleur et la faire passer à la requête pour le traitement. J'ai fais comme ça mais ça ne marche toujours pas :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    /**
     * Tache controller.
     *
     * @Route("/tache")
     */
    class TacheController extends Controller
    {
        /**
         * Lists all Tache entities.
         *
         * @Route("/", name="tache")
         * @Template()
         */
        public function indexAction()
        {	
     
    		$request=$this->getRequest();
     		$formvalue= $request->request->get('value');
    		$search_form=$this->createForm(new RechercheType(), $formvalue);
    		$search_form->bindRequest($request);
     
    		if($request->getMethod()=='POST')
    		{
     
    				$em = $this->getDoctrine()->getEntityManager(); 
    				$taches = $em->getRepository('spTacheBundle:Tache')->getSearchList($formvalue);
    		}
    		else
    		{
            $em = $this->getDoctrine()->getEntityManager();
     
            $taches = $em->getRepository('spTacheBundle:Tache')->findAll();
    		}
     
     
            return array(
                'taches' => $taches,
    			'formvalue' => $formvalue,
                'search_form' => $search_form->createView()
            );
        }

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est pas bon non plus, le bindRequest à faire uniquement dans la condition du POST, et pour récupérer les données c'est getData

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Merci encore stealth35;
    Je vais tout refaire en me documentant plus sur l'objet request. Dis moi juste si je suis sur le bon chemin, voici les étapes que je compte suivre:

    1/ Créer un formulaire avec un seul champ qui ne se base sur aucune entité parce que j'aimerais, qu' en entrant une valeur, récupérer toutes les entités dont n'importe quel champ lui correspond.

    2/ Créer l'action qui va gérer le lien entre le modèle et la vue. C'est là ou je stagne quand il s'agit de récupérer la valeur entrée. J

    3/Adapter la vue pour afficher le formulaire (et le résultat) comme j'ai fais avant!

    Merci beaucoup

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/11/2009, 13h34
  2. Impossible de récupérer la valeur d'un menu déroulant
    Par kyake dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2009, 16h00
  3. [ODBC] ACCESS - Impossible de récupérer la valeur de @@identity (équivalent mysql_insert_id)
    Par FredFrance21 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 14h40
  4. [AJAX] Impossible de récupérer les valeurs en Post
    Par Tommyl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 20h30
  5. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15

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