Bonjour,
C'est fou ce que les mises à jour vont bon train et déjà à la 5.3.9 alors je sèche avec RequestStack pour la session j'essaie de cette façon:
return $this->session->getSession()->set('checkout_data', $data);
Quand je fais:
dd($data);
j'ai bien mon panier au complet mais cela me renvoi l'erreur:
Return value of App\Controller\CheckoutController::confirm() must be an instance of Symfony\Component\HttpFoundation\Response, null returned
Je ne peux pas rediriger autre part que vers ma page checkout
Je vous remercie de votre aide
Voici mon CheckoutController:
<?php
namespace App\Controller;
use App\Form\CheckoutType;
use App\Services\CartServices;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class CheckoutController extends AbstractController
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
$this->session = $requestStack;
}
/**
* @Route("/checkout", name="checkout")
*/
public function index(CartServices $cartServices): Response
{
$user = $this->getUser();
$cart = $cartServices->getFullCart();
if(!isset($cart['products'])){
return $this->redirectToRoute('home');
}
if(!$user->getAddresses()->getValues()){
$this->addFlash('checkout_message','Veuillez ajouter une adresse de livraison dans votre compte avant de continuer');
return $this->redirectToRoute('address_new');
}
$form = $this->createForm(CheckoutType::class,null,['user'=>$user]);
return $this->render('checkout/index.html.twig',[
'cart' => $cart,
'checkout' => $form->createView()
]);
}
/**
* @Route("/checkout/confirm", name="checkout_confirm")
*/
public function confirm(CartServices $cartServices, Request $request):Response{
$user = $this->getUser();
$cart = $cartServices->getFullCart();
if(!isset($cart['products'])){
return $this->redirectToRoute('home');
}
if(!$user->getAddresses()->getValues()){
$this->addFlash('checkout_message','Veuillez ajouter une adresse de livraison dans votre compte avant de continuer');
return $this->redirectToRoute('address_new');
}
$form = $this->createForm(CheckoutType::class,null,['user'=>$user]);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid() || $this->session->get('checkout_data')){
if($this->session->getSession('checkout_data')){
$data = $this->session->getSession('checkout_data');
}else{
$data = $form->getData();
$this->session->set('checkout_data', $data);
}
return $this->session->getSession()->set('checkout_data', $data);
// dd($data);
if($this->session->get('checkout_data')){
$data = $this->session->getSession('checkout_data');
}else{
$data = $form->getData();
$this->session->set('checkout_data', $data);
}
// $data = $form->getData();
$address = $data['address'];
$carrier = $data['carrier'];
$informations = $data['informations'];
// dd($data);
return $this->render('checkout/confirm.html.twig',[
'cart' => $cart,
'address' => $address,
'carrier' => $carrier,
'informations' => $informations,
'checkout' => $form->createView()
]);
}
return $this->redirectToRoute('checkout');
}
}