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 :

Personnaliser la requête d'une collection avec Symfony2


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut Personnaliser la requête d'une collection avec Symfony2
    Bonjour,

    J'ai une question débutante sur laquelle je bloque. En fait, j'ai un formulaire tout simple qui appelle une collection :

    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
     
    class ModuleType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('controles', 'collection', array(
                    'label' => false,
                    'type' => new ModuleControleType(),
                    'allow_add' => true,
                    'allow_delete' => true,
                    'by_reference' => false
                ))
            ;
        }
    ...
    Et voici la ModuleControleType() :

    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
    class ModuleControleType extends AbstractType
    {
    
        use Description;
    
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $this->description($builder, 2);
        }
    
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'AdministrationBundle\Entity\ModuleControle',
                'intention' => $this->getName() . '_token'
            ));
        }
    
        /**
         * @return string
         */
        public function getName()
        {
            return 'administration_module_controle_form';
        }
    }
    Jusque la, pas de soucis, c'est un code vraiment de base sur Symfony et tout fonctionne bien : il va chercher tous mes points. Cependant, je souhaiterais personnaliser la requête (le query_builder donc) qui va chercher mes "points" dans ModuleControle() afin de lui rajouter un WHERE.

    J'ai essayé de rajouter "query_builder" à setDefaultOptions(), comme c'est le cas pour les champs de type "entity" mais ça ne fonctionne pas.

    Merci d'avance

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    yooooooooooooooooooo maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan,


    comment ça ? ça ne marche pas le query_builder, c'est que tu n'as pas assez cherché



    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
     
    ...
    public function __construct($id)
    ****{
    ****$this->id=$id;
    ****}
    *
    ****public function buildForm(FormBuilder $builder, array $options)
    ****{
    ****$id =$this->id;
    *
    ->add('candidatecampaign', 'entity',
    ********array (
    ****************'label' => 'NomDuLabel',
    ****************'class' => 'Adl\\HiringBundle\\Entity\\CandidateCampaign',
    ****************'property' => 'name',
    ****************'query_builder' => function(CandidateCampaignRepository $er) use ($id)
    ****************{
    ************************return $er->createQueryBuilder('a')
    ****************************************->where('a.candidate = :id')
    ****************************************->setParameter('id', $id);
    ****************},
    ************************))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $interview_form = $this->createForm(new InterviewType($id), $interview);
    qu'est ce t'en penses ?

  3. #3
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut
    Salut et merci de ta réponse

    Si j'ai cherché mais comme dit dans le message a la fin ce n'est pas un champ de type entity mais collection.

    Encore merci

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    Cependant, je souhaiterais personnaliser la requête (le query_builder donc) qui va chercher mes "points" dans ModuleControle() afin de lui rajouter un WHERE.
    j'ai compris que tu voulais rajouter un WHERE ce que je t'ai montré. après si ta question porte sur autre chose je trouve ta demande un peu floue (ou alors c'est moi qui ne comprends pas bien).... peux tu reformuler ta question

  5. #5
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut
    Salut et merci de ta réponse

    En fait avec Symfony et si j'ai bien compris, tu peux ajouter des entités de cette façons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                ->add('controles', 'entity' ...
    Jusque la, pas de soucis. Cependant, dans mon cas, j'ai ajouté une collection (qui, certes, ensuite, s'ajoute dans une entité) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                ->add('controles', 'collecion' ...
    Du coup tout s’insère bien et tout se modifie bien, je vois bien les données précédemment enregistrées. Mais lorsqu'il les récupère, je souhaiterais personnaliser la requête.

    Merci d'avance

  6. #6
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Si je comprend bien ton code, tu as d'un côté un formulaire ModuleType qui comporte un champ de type collection dont le nom est "controles" qui est une collection de types "ModuleControleType".

    Ma première question : ton formulaire ModuleControleType, c'est quoi ? Est-ce un champ entity ?

    Dans la doc de Symfony, il n'y a pas d'option "query_builder" rattaché au champ collection : http://symfony.com/doc/current/refer...ollection.html

    Par contre, il y a bien une option "query_builder" pour les champs de type entity : http://symfony.com/doc/current/refer...es/entity.html

    Si ton formulaire ModuleControleType est de type entity, est-ce que tu as ajouté ceci dans ta classe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function getParent()
    {
        return 'entity';
    }

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/08/2007, 20h38
  2. passer une collection avec un lien
    Par CPI_en_mousse dans le forum Struts 1
    Réponses: 31
    Dernier message: 25/05/2007, 16h45
  3. Problème de requête dans une boucle avec ADOQuery
    Par Ekik dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/05/2007, 16h07
  4. [Sql Server 8.0]Requête dans une chaîne avec Cursor à executer
    Par Nicodemus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/11/2006, 17h34
  5. Affichage d'une Collection avec logic:iterate
    Par koukoya dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/10/2006, 11h52

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