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 :

Formulaire : liste déroulante d'une entité lié avec critères


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Formulaire : liste déroulante d'une entité lié avec critères
    Bonjours,

    j'ai deux entitées Evenement et User.
    Les relations sont : Un user peur participer à N(infini) évènement.
    Un évènement concerne N(fini) de User
    Un User est ami avec 0..N autre User.

    J'ai ensuite un formulaire qui permet à un User connecté sur mon site de créer un évènement et d'y ajouter d'autre User.
    Voici mon code :

    ->add('membres', 'entity', array(
    'class' => 'ExempleUserBundle:User',
    'multiple' => true,
    'expanded' => true
    )
    )

    Cela fonctionne très bien, j'ai bien dans mon formulaire une liste des User du site que l'on peut ajouter à l'évènement.

    Maintenant je voudrais que cette liste ne m'affiche UNIQUEMENT les User qui ont un lien d'amitié avec le User connecté.
    Il faudrai donc faire un tri lors de la récupération des entités User et ne garder que celle qui ont un lien avec le User connecté.

    Mais là je n'ai absolument aucune idée de comment faire cela.

    Est-ce que quelqu'un serait comment s'y prendre ou aurait une piste pour m'orienter ??

    Celui qui dit qui l'a fait je lui offre, UN SANDWICH.

    Bien respectueusement.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    tu as l'option query builder pour personaliser les requetes:
    http://symfony.com/doc/current/refer...r-the-entities

    autre possibilité utiliser l'option choices
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $builder->add('users', 'entity', array(
        'class' => 'AcmeHelloBundle:User',
        'choices' => $currentUser->getFriends()->toArray()
    ));
    le problème étant ici de récupérer l'utilisateur connecté, tu peux le passer dans le constructeur de ton EvenementType par exemple

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci, ça devrait fonctionner j'ai essayé le queryBuilder et j'arrive à personaliser la requete.

    Par contre pour récupérer l'utilisateur actuel j'ai un peu de mal tu pourrais m'éclairer ?

    Je suppose que dans l'action de mon controller je dois récupérer l'utilisateur comme cela :
    $currentUser = $this->container->get('security.context')->getToken()->getUser();

    puis passer l'objet $user ou que son id dans
    $form = $this->createForm(new RencontreType, $rencontre, $currentUser);

    Mais je ne trouve pas le constructeur pour spécifier le passage de ce paramètre dans la méthode createForm().

    Merci pour ton aide !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    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
     
    Class RencontreType{
     
     protected $user;
     
     public function _construct($user){
      $this->user=$user;
     } 
     
     public function buildForm($builder,$data,$options){
      $user=$this->user;
    //en utilisant le queryBuilder
      $builder->add('users', 'entity', array(
        'class' => 'AcmeHelloBundle:User',
        'query_builder'=>function($repository)use($user){
            //dans cette fonction on a accés au repository et à l'utilisateur
       }
      ));
     }
     
    }
    dans le controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $currentUser = $this->container->get('security.context')->getToken()->getUser();
    $form = $this->createForm(new RencontreType($currentUser), $rencontre);//le troisième argument est un tableau d'option
    Utilises les balises code dans tes messages

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour bonjour,

    Cela fonctionne merci beaucoup !

    Au passage pour ceux qui liront le post en ayant le même problème,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    public function _construct($user){
      $this->user=$user;
     }
    Il y à une faute de frappe c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function __construct($user){
      $this->user=$user;
     }
    Avec 2 underscores "_" ! et sans ça l'importation de l'user ne fonctionne pas, ça évitera peu être quelques minutes d'arrachage de cheveux à certain, car sinon tout le reste fonctionne parfaitement, merci Arnooo999

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2010, 15h30
  2. Réponses: 2
    Dernier message: 20/11/2009, 11h37
  3. Liste déroulante (liée à une table SQL) dans un formulaire
    Par helico57570 dans le forum Modélisation
    Réponses: 1
    Dernier message: 09/11/2009, 13h41
  4. Réponses: 7
    Dernier message: 03/12/2007, 15h37
  5. Réponses: 4
    Dernier message: 01/04/2007, 14h57

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