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 :

requete query builder formulaire [4.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Par défaut requete query builder formulaire
    Bonjour à tous !
    Vous êtes une communauté très active et fort sympathique, aussi je me tourne vers vous pour ce qui semble être mon dernier probleme pour terminer mon application avec symfony.
    Je cherche a faire une requete personnalisée dans un formualire afin d'obtenir uniquement les clients (classe Client) du mécanicien (classe User). Donc j'ai bien regardé la doc de symfony mais je crois que je ne comprends pas très bien.
    Le souci c'est qu'il faudrait que je passe l'ID du mecanicien (User) en parametre dans le formulaire (là ce serait génial car apres je sais faire) mais voila je ne sais pas récupérer l'ID du mécanicien dans un formulaire ou le passer en parametre (car dans un controller je sais faire).
    Auriez vous une idée de comment faire ?
    Ou sinon seriez vous comment je peux tous simplement appeler la methode getClients de la classe User dans un formulaire ?
    En espérant avoir été assez clair

    Merci de votre aide

    Vincent

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Salut,

    Regarde si tu ne pourrais pas trouver ton bonheur en utilisant un champ EntityType avec une requête personnalisée dans l'option "query_builder" (https://symfony.com/doc/current/refe...-query-builder).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Par défaut oui mais
    Bonsoir _Thomas,
    J'ai regardé la doc avant de venir poster mon premier message mais je n'y arrive pas très bien. Pourriez vous m'aider à construire la requete ?
    Le souci c'est qu'il me faut l'id de l'user (je ne sais pas le passer en parametre dans un formulaire) ou faire appel a la methode getClients de la classe User (chose que je n'ai pas reussi a faire)
    Pour le moment, si j'utilise le repository de user il me faut son id sinon je ne vais pas pouvoir récupérer ses clients.
    Merci du lien

    Vincent

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Par défaut En réflechissant un peu ça passe mieux
    Bonjour à tous,
    donc oui _Thomas j'avais lu la doc mais pas assez bien je suis passé à coté du détails qu'il me manqué
    je vous mets le code en espérant que cela pourra aider d'autres personnes. merci bien

    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 buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('destinataire', EntityType::class , [
                  'class' => Client::class,
                  'query_builder' => function ( EntityRepository $er ) {
              return $er->createQueryBuilder('c')
                ->where('c.user = 1')
                ->orderBy('c.nom', 'ASC');
              },
          ])
                ->add('emetteur')
                ->add('sujet')
                ->add('corps')
                ->add('priorite')
                ->add('EnvoyerFormulaireDuVehicule', CheckboxType::class, [
                  'label'    => 'Envoyer la fiche de suivi du vehicule ?',
                  'required' => false,])
                ->add('Envoyer', SubmitType::class, [
                  'attr' => ['class' => 'save'],
                ])
            ;
        }
    Vincent

  5. #5
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Dans la classe du formulaire, injecte le service suivant :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private $tokenStorage;
     
    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }
    Ensuite dans la méthode buildForm() tu peux récupérer l'ID de l'utilisateur courant avec : $this->tokenStorage->getToken()->getUser()->getId(); Par contre assure-toi que l'utilisateur est bien authentifié lorsqu'il accède à cette page sinon il n'y aura pas de token/user récupéré.

    Au passage php bin/console debug:autowiring te donne la liste des classes et interfaces que tu peux injecter en argument des contrôleurs ou dans le constructeur de n'importe quel service (les classes de formulaires étant des services). Donc en cherchant dans cette liste tu trouveras très souvent un service correspondant à ce que tu veux faire/récupérer (et si tu ne sais pas quel service fait quoi, une petite recherche sur Internet pour trouver la réponse, ou lis rapidement son code et les commentaires qu'il contient).

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

Discussions similaires

  1. Requete multi criteres via Eloquent ou Query Builder
    Par double-m dans le forum Laravel
    Réponses: 9
    Dernier message: 14/03/2019, 09h28
  2. Laravel - query builder - sous requete dans la meme table
    Par yataglanzy dans le forum Laravel
    Réponses: 5
    Dernier message: 31/10/2015, 11h42
  3. Réponses: 3
    Dernier message: 12/08/2014, 21h55
  4. [Débutant] pb d'appel à une valeur externe dans une requete query builder sous vs 2008
    Par rafamerci dans le forum Visual Studio
    Réponses: 1
    Dernier message: 24/02/2014, 19h43
  5. requete dataset avec dblink dans query builder
    Par livinho38 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 26/08/2010, 10h53

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