Bonjour,
j'implémente cette fonction "très basique" et j'ai du mal à faire passer les infos lors du clic "ajout dans le panier".
D'abord dans mon projet, le panier est une commande qui a un statut panier, et l'ajout au panier se fait uniquement pour les utilisateurs connéctés . Si jamais quelqu'un a une source /code qui remplit ces 2 critère je veux bien le checker.

Voici mes fichiers:

le formbuilder

        $builder
            ->add('quantite');
        $builder
            ->add('add', SubmitType::class, [
                'label' => 'Ajouter au panier',
            ]);

le twig:

{{ form_label(form.quantite) }}
    {{ form_widget(form.quantite, {
        'attr': {
            'class': 'form-control ' ~ (form.quantite.vars.valid ? '' : 'is-invalid')
        }
    }) }}
    <div class="invalid-feedback">
        {{ form_errors(form.quantite) }}
    </div>
</div>
{{ form_widget(form.add, {'attr': {'class': 'btn btn-warning'}}) }}

et le controller qui semble faire être le souci

public function ajouterAuPanier(...)
    {
        $form = $this->createForm(AjouterAuPanierType::class);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $item = $form->getData();

            $item->setArticle($article);
            $panier = $user->getPanier();
            $panier
                ->addArticleCommande($article)
                ->setDateMaj(new \DateTime());

          $commandeRepository->PanierEnregistre($panier, $user);

            return $this->redirectToRoute('app_ajouter_panier', ['id' => $produit->getId()]);
        }

        return $this->render('catalogue/produit/articles.html.twig', [
            'produit' => $produit,
            'form' =>$form->createView()
        ]);
    }

quand je clique sur ajouter au panier, j'obtiens
Too few arguments to function App\Entity\ArticleCommande::__construct(), 0 passed in C:\siteEcommerceApema\bases éventuelles\finish\vendor\symfony\form\Extension\Core\Type\FormType.php on line 160 and at least 2 expected
car mon constructeur

ArticleCommande est l'entité représentant les lignes d'une commande.

Mon problème:
je ne sais pas du tout à quel moment à quel endroit du code j'envoi ces paramètres.

J'ai essayé de faire dd('qqchose') dans le controller mais, l'erreur tombe avant (le controlleur return sur lui même).

La doc officielle est trop succinte du coup la validation du formulaire est très sombre pour moi.

Auriez vous des solutions ? Des sujets similaires résolus ? des documentations fournies ??

3 réponses


bonsoir
sur youtube
panier symfony 5
tu tombe sur les deux premier qui traite bien le sujet. il terestera les information de l'utilisateur à associer à la commande
bon courage

MofoGasy
Auteur

Merci ppour ton aide
Je ne sais pas si tu as pu regarder les vidéos proposées mais chacune d'elles utilise exclusivement les sessions. Le projet de nouvelle techno n'a même pas d'entity user.
Et la video de Chamla indique d'emblée dans le titre: SESSION. J'ai quand même pris la peine de voir en acceléré chacune des vidéos et pas de user.

Pour rappel dans mon projet, le panier n'existe pas sans user.

Merci quand même

Vous tombez sur les deux premiers, qui font tous deux un excellent travail pour aborder le sujet. il s'agira de tester les informations de l'utilisateur à associer à la commande
Bonne chance
stumble guys