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.