Bonjour,
J'ai un problème qui me laisse perplexe:
Pour une boutique en ligne, dans un controller, je récupère toutes mes entités Packages d'une Catégorie (entité) que je demande ensuite à twig de m'afficher.
Pour chaque package je veux afficher un petit formulaire de commande (quantité + bouton submit).
voici le code:et la vue (ou le formulaire devrait être defini):
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
52
53
54
55
56
57
58
59
60
61
62 // packages & produits / categories foreach ($categories as $k_categorie => $categorie) { $produits = array(); if ($categorie->getIdcategorie() == $id_categorie) { // recuperer les packages de la categorie $packageRepository = $this->getDoctrine()->getManager()->getRepository('CoreBundle:Packages'); $packages = $packageRepository->findPackagesInternetByCategorie($categorie); // recuperer les tarifs / package $PackagesProduitRepository = $this->getDoctrine()->getManager()->getRepository('CoreBundle:PackagesProduit'); $tmp= array(); foreach ($packages as $k => $package) { $tmp[]=$PackagesProduitRepository->getPrixPackage($package->getIdpackages(),1); // Création du formulaire $form = $this->get('form.factory')->create(PackagesForm::class); $package->setForm($form->createView()); $package->setQuotaProduitPackage($tmp); } $categorie->setPackages($packages); //dump($categorie); //die; // recuperer les produits de la categorie $produitRepository = $this->getDoctrine()->getManager()->getRepository('CoreBundle:Produit'); $produits = $produitRepository->findProduitsInternetByCategorie($categorie); // recuperer les tarifs / produit $tarifRepository = $this->getDoctrine()->getManager()->getRepository('CoreBundle:Tarif'); foreach ($produits as $k => $produit) { $tarifs = $tarifRepository->findTarifsProduitInternetByProduit($produit); //-------------------------------------------------------------- // Clear manager // Nécessaire pour nettoyer le cache et récupérer les bons tarifs $this->getDoctrine()->getManager()->clear(); //-------------------------------------------------------------- $produit->setTarifs($tarifs); // Création du formulaire $form = $this->get('form.factory')->create(ProduitForm::class); $produit->setForm($form->createView()); } $categorie->setProduits($produits); $current_categorie = $categorie; } }
La catégorie contient 2 packages et dans le rendu, le premier formulaire s'affiche 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
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
52
53
54
55
56 {% for package in current_categorie.packages %} <div class="row produit"> <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3 photo"> {% if package.image is not null %} <img src="data:image/jpg;base64,{{ package.renderimage }}" width="140" height="140" title="{{ package.designationinternet }}"/> {% else %} <img src="{{ asset('bundles/dagcore/images/null.jpg') }}" width="140" height="140" title="Aucune image"/> {% endif %} </div> <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 description"> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 designation">{{ package.designationinternet }}</div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 observations">{{ package.description|raw }}</div> </div> </div> <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3 achat"> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 tarifs"> blablable<br/> blablable<br/> blablable<br/> blablable<br/> </div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 action"> {% if package.saisieinfoaddobligatoire == 0 %} {# NE FONCTIONNE PAS ! TROP LENT ! {{ render(controller("DAGCoreBundle:Packages:formulaire", {'package': package})) }} #} {{ form_start(package.form, {'method': 'POST', 'attr': {'class': 'nobottommargin form-achat' }, 'id': 'achat-form-'~package.idpackages, 'name': 'achat-form-'~package.idpackages, 'action': path('dag_achat_packages', {'idPackage': package.idpackages}) }) }} {% for quota,info in package.quotaProduitPackage %} {% if package.quotaProduitPackage|length == 1 %} {{ form_widget(package.form.quantite, {'full_name': 'achat-form[quantite_'~info.idQuota~']', 'id': 'achat-form-quantite['~info.idQuota~']'}) }} {% endif %} {% endfor %} {{ form_widget(package.form.ajouter, {'attr': {'class': 'btn-default btn'}}) }} {{ form_end(package.form) }} {% else %} <div class="">Détails</div> {% endif %} </div> </div> </div> </div> {% endfor %}
mais le second :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <form name="achat-form-11" method="post" action="/app_dev.php/service/achat-packages/11" class="nobottommargin form-achat"> <input id="achat-form-quantite[51]" name="achat-form[quantite_51]" required="required" min="1" max="100000" class="form-control" type="number"> <button type="submit" id="packages_form_ajouter" name="packages_form[ajouter]" class="btn-default btn btn">Ajouter</button> <input id="packages_form__token" name="packages_form[_token]" value="I0nP1Df2rwz5-x6-W12QSG3GDjhytDuY97-ui9n4_4Q" type="hidden"></form>
les attributs de la balise form sont bons mais pas les balises qu'elle contient?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <form name="achat-form-41" method="post" action="/app_dev.php/service/achat-packages/41" class="nobottommargin form-achat"> <button type="submit" id="packages_form_ajouter" name="packages_form[ajouter]" class="btn-default btn btn">Ajouter</button> <div class="form-group"><label class="control-label required" for="packages_form_quantite">Quantité :</label> <span style="font-size: 1.2em;color: red">*</span><input id="packages_form_quantite" name="packages_form[quantite]" required="required" min="1" max="100000" class="form-control" type="number"></div><input id="packages_form__token" name="packages_form[_token]" value="I0nP1Df2rwz5-x6-W12QSG3GDjhytDuY97-ui9n4_4Q" type="hidden"></form>
Y a t'il un clear à faire sur le FormVIew, formWidget...?
Comment faire pour avoir le meme affichage du formulaire; avec les definitions données?
Partager