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 :

EntityType dans un CollectionType : Multiples requêtes identiques [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut EntityType dans un CollectionType : Multiples requêtes identiques
    Salut tout le monde,

    Je viens vers vous avec une constatation.
    Si un champ Entity est dans une Collection, pour remplir le menu déroulant (Entity) de chaque item de la collection, il y a autant de requêtes qu'il y a d'items (+1 avec le prototype).

    Auriez vous une solution pour éviter que la même requête s’exécute plusieurs fois alors que ce n'est pas nécessaire?

    Merci!
    Un petit si la réponse convient. Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Allez hop! J'ai une solution. Passer les éléments au formulaire directement sans query_builder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $userForm = $this->createForm(new UserType($em->getRepository('RapotorAppBundle:City')->findAll()), $user);
    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
    <?php
     
    namespace Rapotor\AppBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class UserType extends AbstractType
    {
        protected $_cities;
     
        public function __construct($cities)
        {
            $this->_cities = $cities;
        }
     
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder->add('lastname');
            $builder->add('addresses', 'collection', array(
                'type'          => new AddressType($this->_cities),
                'allow_add'     => true,
                'allow_delete'  => true,
                'prototype'     => true,
            ));
        }
     
        public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'Rapotor\AppBundle\Entity\User',
            );
        }
     
        public function getName()
        {
            return 'user';
        }
    }
    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
    <?php
     
    namespace Rapotor\AppBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class AddressType extends AbstractType
    {
        protected $_cityChoices;
     
        public function __construct($choices)
        {
            $this->_cityChoices = $choices;
        }
     
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder->add('street');
            $builder->add('number', 'integer');
            $builder->add('box', 'text', array('required' => false));
            $builder->add('city', 'entity', array(
                'class'         => 'Rapotor\AppBundle\Entity\City',
                'empty_value'   => '-- select --',
                'choices'       => $this->_cityChoices,
                //'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); },
            ));
        }
     
        public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'Rapotor\AppBundle\Entity\Address',
            );
        }
     
        public function getName()
        {
            return 'user_address';
        }
    }
    Un petit si la réponse convient. Merci.

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

Discussions similaires

  1. multiples requètes dans un meme fichier php
    Par msi79 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/10/2011, 12h55
  2. Réponses: 3
    Dernier message: 27/02/2011, 16h01
  3. Multiple requête dans 1 seul TQUERY
    Par AODRENN dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/06/2007, 10h41
  4. Critère dans un Générateur de requète
    Par Mario Rousson dans le forum Access
    Réponses: 1
    Dernier message: 09/02/2006, 15h29
  5. Position d'un enregistrement dans une table ou requête Query
    Par polinevol dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/01/2006, 03h53

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