Bonjour,
J’essai d’utiliser les sessions dans la version 5.3.9 de Symfony avec RequestStack parce que SessionInterface est obsolète.
J’obtiens l’erreur suivante :
à: if(isset($cart[$id])){ (dans ma fonction addToCart)Cannot use object of type Symfony\Component\HttpFoundation\Session\Session as array
dans les versions précédentes, mon code marchait bien et j'ai même essayé ->$id au lieur de [$id] alors plus d'erreur mais pas de résultat non plus.
C'est peut-être à cause de ma fonction updateCart car je vois bien ce que j'insère manuellement, mais quand j'actualise la page, cela ne s'incrémente pas ?
Je vous remercie de votre aide
Mon CartController.php :
Code php : 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 <?php namespace App\Controller; use App\Services\CartServices; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class CartController extends AbstractController { /** * @Route("/cart", name="cart") */ public function index(CartServices $cartServices): Response { $cartServices->addToCart(3); dd($cartServices->getCart()); return $this->render('cart/index.html.twig', [ 'controller_name' => 'CartController', ]); } } Mon CartServices.php :
Code php : 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 <?php namespace App\Services; use App\Repository\ProductRepository; use Symfony\Component\HttpFoundation\RequestStack; class CartServices { private $requestStack; private $repoProduct; public function __construct(RequestStack $requestStack, ProductRepository $repoProduct) { $this->requestStack = $requestStack; $this->repoProduct = $repoProduct; } public function addToCart($id){ $cart = $this->getCart(); if(isset($cart[$id])){ $cart[$id]++; }else{ $cart[$id] = 1; } $this->updateCart($cart); }
Ma fonction updateCart:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public function updateCart($cart){ $this->requestStack->getSession('cart', $cart); }
$cart = $this->getCart() :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public function getCart(){ return $this->requestStack->getSession('cart', []); }
Partager