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 :

Undefined variable: idVue in /Symfony/src/App/ [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut Undefined variable: idVue in /Symfony/src/App/
    Bonjour a tous;

    J'ai un problème de programmation, comme la function vueAction prend $id comme paramètre, et dans (*) faut que je mette $id, la requête sélectionne suivant les valeurs de $id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function vueAction($id)
            {
     
            $em = $this->getDoctrine()->getEntityManager();
            $poi = $em->getRepository('AppMyBundle:Poi')->findByIdApp($id); .... (*)
     
    .
    .
    .
    Et il faut que la requête sélectionne suivant $idvue et lorseque je met $idVue à la place de $id :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $poi = $em->getRepository('AppBundle:Poi')->findByIdApp($idVue);
    j'ai l'erreur suivante :
    Undefined variable: idVue in /Symfony/src/App/MyBundle/Controller/AppController.php

    Normale, puisque $idVue est inconnu dans mon controlleur, j'aurais voulu savoir comment déclarer le paramètre $idVue dans mon contrôleur ??

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Points : 69
    Points
    69
    Par défaut
    Salut,

    Difficile de comprendre ce que $id et $idVue représentent exactement pour toi. Mais tu dois être dans l'un des cas ci-dessous.

    Si ton $idVue est la même valeur que ton $id je ne vois pas pourquoi tu veux créer un deuxième paramètre. Remplaces juste $id dans le prototype de ta fonction par $idVue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function vueAction($idVue)
            {
            $em = $this->getDoctrine()->getEntityManager();
            $poi = $em->getRepository('AppMyBundle:Poi')->findByIdApp($idVue); .... (*)
    Si ton $id est modifié dans ton Controller mais que tu veux garder en mémoire ton $id non modifié (passé en paramètre), tu n'as qu'à dupliquer la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function vueAction($id)
            {
            $idVue = $id;
            $em = $this->getDoctrine()->getEntityManager();
            $poi = $em->getRepository('AppMyBundle:Poi')->findByIdApp($idVue); .... (*) // Even if $id is changed, $idVue is not changed until you change it
    Si ton $id est différent de ton $idVue, déclare le dans ton prototype de fonction tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function vueAction($id, $idVue)
            {
            $em = $this->getDoctrine()->getEntityManager();
            $poi = $em->getRepository('AppMyBundle:Poi')->findByIdApp($idVue); .... (*)
    Mais dans ce cas, mets à jour ton routing.yml pour que la nouvelle route soit bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ton_url:
        pattern:  /tonurl/{id}/{idVue}
        defaults: { _controller: XX:XX:vue }
    Renseignes-toi ici et ici pour bien comprendre.

    Si ce n'est aucun des cas ci-dessus, précises ce que tu veux vraiment.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Merci d'avoir répondu, en fait le $id et $idVue son différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function vueAction($id, $idVue)
            {
            $em = $this->getDoctrine()->getEntityManager();
            $poi = $em->getRepository('AppMyBundle:Poi')->findByIdApp($idVue);
    le route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        pattern:  {id}/vue    --------> pattern:  {id}/vue/{idVue}
    n y a pas le route !!!

    il m'affiche :
    No route found for "GET /app/1/vue" 1 c'est une valeur de $id
    lorseque je met /app/1/vue/3 ca marche
    Peut etre c'est le path dans la vue qui m'a amène jusqu’à cette url ???


    <td><a href="{{ path('app_vue',{ 'id': entity.id }) }}">{{ vue.title }}</a></td>
    comment je dois ajouter idVue dans ce lien ?

  4. #4
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Points : 69
    Points
    69
    Par défaut
    Salut,

    Tu dois écrire ton lien de cette façon :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <td><a href="{{ path('app_vue',{ 'id': entity.id, 'idVue' : la_valeur_de_ton_idVue }) }}">{{ vue.title }}</a></td>
    <!--  la_valeur_de_ton_idVue == entity.idVue ? -->

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Parfait ca marche , Merci Steph0 pour ton aide, en effet faut envoyer $idVue dans l'url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <td><a href="{{ path('app_vue',{ 'id': entity.id, 'idVue': vue.id }) }}">{{ vue.title }}</a></td>

    Grace a toi j'ai compris le principe
    Merci.

  6. #6
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Points : 69
    Points
    69
    Par défaut
    De rien.

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

Discussions similaires

  1. Notice: Undefined variable
    Par oranoutan dans le forum Langage
    Réponses: 19
    Dernier message: 21/12/2005, 23h28
  2. undefined variable
    Par ept35 dans le forum Langage
    Réponses: 3
    Dernier message: 30/11/2005, 16h48
  3. Notice: Undefined variable
    Par kayn dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2005, 21h44
  4. Réponses: 3
    Dernier message: 22/09/2005, 12h24
  5. Réponses: 2
    Dernier message: 10/08/2004, 18h35

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