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 :

Query builder : passer $id en paramètre [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Query builder : passer $id en paramètre
    Bonjour,

    J'essaie d'utiliser le query builder dans ma classe formulaire.
    J'ai déjà crée ma fonction dans mon repository.

    voici mon form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php 
     
    ->add('candidatecampaign', 'entity', 
    	array (
    	'label' => 'NomDuLabel',
    	'class' => 'Adl\\HiringBundle\\Entity\\CandidateCampaign',
    	'property' => 'name',
    	'query_builder' => function(CandidateCampaignRepository $er) 
    			{
    			return $er->getCandidateCampaignList($id);
    			},
    	'required' => true))
    $id est le paramètre qui doit correspondre à l'id passé à ma méthode <gras>editAction($id)</gras>.

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php 
     
    	public function getCandidateCampaignList ($id)
    	{
     
    		$qb = $this->createQueryBuilder('a');
     
    		$qb->where('a.candidate = :candidate')
    			  ->setParameter('candidate', $id);
     
    		return $qb->getQuery()->getResult();
    	}


    Je ne vois pas comment lui passer l'argument id courant. J'ai donc cette erreur :

    Notice: Undefined variable: id in E:\Web\WampSites\Symfony\src\Adl\HiringBundle\Form\InterviewType.php line 62
    Dois-je passer l'id via le constructeur du formulaire ? Est-ce possible de faire firectement un candidate->getId() dans le query builder ? Je sais pas trop comment m'y prendre là ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Par défaut
    Tu n'es pas très loin, essaye le use :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'query_builder' => function(CandidateCampaignRepository $er) use ($id)
        {
            return $er->getCandidateCampaignList($id);
        },

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    salut,

    Ouais je me dis aussi que je suis pas loin mais bon...

    Je viens d'essayer comme tu as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <?php ->add('candidatecampaign', 'entity', 
    	array (
    			'label' => 'NomDuLabel',
    			'class' => 'Adl\\HiringBundle\\Entity\\CandidateCampaign',
    			'property' => 'name',
    			'query_builder' => function(CandidateCampaignRepository $er) use ($id) 
    			{
    					return $er->getCandidateCampaignList($id);
    			},
    					))
    mais j'ai toujours la même erreur deux lignes plus haut cette fois.

    Je ne parviens pas à passer ce paramètre. Ma classe form semble ne pas le voir. Comment dois-je le passer.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Par défaut
    Ah oui effectivement si tu ne l'as déjà pas dans ta classe, ca va être difficile
    Je te conseille de le passer dans le contructeur de ton Form, et de l'envoyer lors de sa création dans ton controller. De ce genre là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public function __construct($id)
        {
            $this->id = $id;
        }
    Ensuite tu remplaces juste ton $id par $this->id pour le querybuilder.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Dans mon controleur, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $interview_form = $this->createForm(new InterviewType($id), $interview);
    Dans ma classe de formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php public function __construct($id)
        {
            $this->id = $id;
        }
     
    'query_builder' => function(CandidateCampaignRepository $er) use ($this->id) 
    	{
    			return $er->getCandidateCampaignList($this->id);
    	},
    Je reçois une merveilleuse erreur :

    Fatal error: Cannot use $this as lexical variable in E:\Web\WampSites\Symfony\src\Adl\HiringBundle\Form\InterviewType.php on line 65
    Jamais eu cette erreur, comment dois-je l'interpréter ?

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Un dernier petit effort :

    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
    <?php public function __construct($id)
        {
            $this->id = $id;
        }
     
    public function buildForm()
    {
    $id = $this->id;
     ....
    'query_builder' => function(CandidateCampaignRepository $er) use ($id) 
    	{
    			return $er->getCandidateCampaignList($id);
    	},
     
    ...
    }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/04/2009, 16h13
  2. Réponses: 2
    Dernier message: 04/06/2007, 16h38
  3. SQL Builder et les requêtes paramétrés
    Par laklak dans le forum Bases de données
    Réponses: 9
    Dernier message: 16/05/2007, 14h25
  4. Comment configurer active query builder
    Par davos56 dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/04/2007, 07h38
  5. Réponses: 2
    Dernier message: 05/04/2007, 13h55

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