Vous êtes sur la page 1sur 3

public function add($id, Request $request)

TP 7.2 (Ajout d’une session pour créer un panier ) {


(Ce TP est une suite du TP 7.1) $session = $request->getSession();
$panier = $session->get('panier',[]);

if(!empty($panier[$id]))
1-Ajouter à votre application web du TP 7.1 un contrôleur et un twig « cart » par la commande ci -
$panier[$id]++;
dessous :
else
$ php bin/console make:controller cart $panier[$id]=1;

$session->set('panier',$panier);
2-Copier le code du contrôleur « CartController.php »
return $this->redirectToRoute('cart');
<?php }
//Sami Melki 2021 }
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; 3-Copier le code de la Template “cart/index.html.twig »


use Symfony\Component\HttpFoundation\Response;
{% extends 'base.html.twig' %}
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
{% block title %}Votre panier{% endblock %}

class CartController extends AbstractController


{% block body %}
{
/**
<p><h1>Votre panier</h1></p>
* @Route("/cart", name="cart")
<hr>
*/
public function index(Request $request): Response
<div class="container">
{
{% if items | length %}
$session = $request->getSession();
$panier = $session->get('panier',[]);
<table class="table">
<thead>
$panierData = [];
<tr>
<th>Id</th>
foreach ($panier as $id => $quantity)
<th>Nom</th>
{
<th>Quantité</th>
$panierData[] = [
<th>Prix</th>
'id'=> $id,
</tr>
'quantity'=> $quantity
</thead>
];
<tbody>
}
{% for item in items %}
<tr>
return $this->render('cart/index.html.twig', ['items'=>$panierData]);
<td>{{ item.id }}</td>
<td>---</td>
}
<td>{{ item.quantity }}</td>
<td>---</td>
/**
</tr>
* @Route("/add", name="app_add")
{% endfor %}
*/

@Sami Melki AFCS/Session et panier avec Symfony 5/2021 1 @Sami Melki AFCS/Session et panier avec Symfony 5/2021 2
</tbody> <h1>Welcome!</h1>
<tfoot>
<tr> <p><a href="add/354" >Produit 1 (20dt) : Add to cart</a></p>
<td colspan="3" class="text-right">Total:</td> <p><a href="add/471" >Produit 2 (45dt) : Add to cart</a></p>
<td>---</td> <p><a href="add/790" >Produit 3 (233dt) : Add to cart</a></p>
<td></td> <p><a href="add/785" >Produit 4 (98dt) : Add to cart</a></p>
</tr> <p><a href="add/787" >Produit 4 (58dt) : Add to cart</a></p>
</tfoot>
</table> {% endblock %}

{% else %}
<p> <h3>Panier vide !</h3></p>
6- Test
{% endif %}
</div>

<hr>
<p><a href="/" >Accueil</a></p>

{% endblock %}

4-Ajouter les nouvelles routes « /add et /cart » dans le fichier routes.yaml

cart:
path: /cart
controller: App\Controller\CartController::index
app_add:
path: /add/{id}
controller: App\Controller\CartController::add
Remarque : pour passer un paramètre à une fonction du contrôleur, on utilise le
symbole « {param} ».

5-Ajouter quelques produits dans la page «index/ index.html.twig »

{% extends 'base.html.twig' %}

{% block title %}{% endblock %}

{% block body %}

{% if app.user %}
<div class="mb-3">
You are logged in as {{ app.user.username }}, <a href="{{ path('app_logout') }}">Logout</a>
</div>
{% endif %}

@Sami Melki AFCS/Session et panier avec Symfony 5/2021 3 @Sami Melki AFCS/Session et panier avec Symfony 5/2021 4
@Sami Melki AFCS/Session et panier avec Symfony 5/2021 5

Vous aimerez peut-être aussi