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 :

Récupérer un id dans un form avec symfony


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Par défaut Récupérer un id dans un form avec symfony
    Bonjour à tous,

    Voila depuis quelques jours je me retrouve devant un souci que je n'arrive pas a résoudre.

    Je suis sous symfony4.

    Je fait une gestion de stock d'articles de sport qui est lié a une liste d'adhérent. L'idée c'est que l'administrateur attribut certains produit a chacun des adhérents.

    L’adhérent n'intervient pas et n'a pas de compte , seul l'administrateur intervient.

    J'arrive a le faire grâce a mon form avec un choice_label sur ma propriété "adherent". J'ai une liste déroulante avec tous mes adhérents. Mais l'idée se serait qu'il me récupère automatiquement l'id de mon adhérent sur lequel l'administrateur crait une commande, id qui est dans la barre de navigation.

    Pour vous donner une idée je suis sur ma fiche adhérent, je lui crais une nouvelle commande. Mais l'administrateur n'a pas a signaler a qui appartient cette commande.

    Je vous met mon fichier Type:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    class CommandeType extends AbstractType
    {
     
       /**
         * Permet d'avoir la configuration de base d'un champ
         *
         * @param string $label
         * @param string $placeholder
         * @return array
         */
        private function getConfiguration($label,$placeholder) {
            return [
                'label' =>$label,
                'attr'  => [
                    'placeholder' => $placeholder
                ]
                ];
    }
     
     
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('datecommande',DateType::class,$this->getConfiguration("Date de la commande","Inserez la date de la commande"))
                ->add('qte',IntegerType::class,$this->getConfiguration("Quantité stock","Tapez la quantité du stock"))
                ->add('adherent',EntityType::class,
                [
                    'class' => Adherent::class,
                    'choice_label' => function ($adherent) {
                        return ($adherent->getId()); 
     
                    }
     
                ]
                )
                ->add('produit',EntityType::class
                , [
                    'class' => Produit::class,
                    'choice_label' => 'title'
     
                    ]);
            ;
        }
     
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Commande::class,
            ]);
        }
    }
    Mon controller
    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
    class CommandeController extends AbstractController
    { 
        /**
         * Permet de créer une commande
         *
         * @Route("/commande/adherent/{id}/new/", name="commande_create")
         */
        public function create(Request $request, ObjectManager $manager,$id)
        {
     
            $repo = $this->getDoctrine()->getRepository(Adherent::class);
            $adherent = $repo->find($id);
     
            $commande = new Commande();
     
            $form = $this->createForm(CommandeType::class,$commande);
     
            $form->handleRequest($request);
     
            if($form->isSubmitted() and $form->isValid()){
     
     
              // $commande->setAdherent();
     
     
               $manager->persist($commande);
               $manager->flush();
     
               $this->AddFlash(
                   'succes',
                   "Le produit a bien été enregistré  !"
               );
     
            }
     
            return $this->render("commande/create.html.twig",[
                'adherent'=> $adherent,
                 'form'=> $form->createView()
            ]);
        }
    ....
    Mon fichier Twig
    Code twig : 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
    {% extends 'base.html.twig' %}
     
    {% block title %}
     
        {% form_theme form _self %}
    {% endblock %}
     
    {% block body %}
        <div class="container mt-3">
            <h1>Nouvelle commande</h1>
            {{ form_start(form) }}
     
     
            {{ form_start(form) }}
            {{ form_widget(form) }}
     
            <button type="submit" class="btn btn-primary">Créer une nouvelle commande</button>
            {{ form_end(form) }}
        </div>
    {% endblock %}

    Merci beaucoup de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Par défaut resolu
    C'est bon j'ai trouvé.
    J'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $commande->setAdherent($adherent);
    dans mon form

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/06/2011, 16h19
  2. Tabulation dans une form avec entrée
    Par Cl@rk dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 12h09
  3. Gestion clavier dans une form avec dbgrid
    Par albedo dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/04/2006, 15h42
  4. Réponses: 4
    Dernier message: 15/04/2006, 19h41
  5. [EJBQL] Récupérer une donnée dans un EJB avec EJB/QL
    Par pblb62 dans le forum Java EE
    Réponses: 3
    Dernier message: 28/03/2006, 11h53

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