2017-04-25 3 views
0

Im Versuch, Produkte zu aktuellen Benutzers Warenkorb in meinem CartController angemeldet hinzufügen, aber wenn ich den „In den Warenkorb“ klicken, um wirft es die folgende Ausnahme: Warnung:Invalid argument für foreach in Symfony-Controller geliefert

Invalid argument für foreach geliefert()

Hier ist meine addToCart Funktion:

/** 
    * @Route("/cart/add", name="cart_add") 
    */ 
    public function addToCartAction(Request $request) 
    { 
     $manager = $this->getDoctrine()->getManager(); 
     $currentUserId = $this->get('security.token_storage')->getToken()->getUser(); 
     $session = $this->get('session'); 
     $id_cart = $session->get('id_cart', false); 

     if (!$id_cart) { 
      $cart = new Cart(); 
      $cart->setUserId($currentUserId); 
      $cart->setDateCreated(new \DateTime()); 
      $cart->setDateUpdated(new \DateTime()); 

      $manager->persist($cart); 
      $manager->flush(); 
      $session->set('id_cart', $cart->getId()); 
     } 

     $cart = $this->getDoctrine()->getRepository('AppBundle:Cart')->find($session->get('id_cart', false)); 

     $products = $request->get('products'); 

     foreach ($products as $id_product) { 
      $product = $this->getDoctrine()->getRepository('AppBundle:Product')->find($id_product); 

      if($product) { 
       $cartProduct = new CartProduct(); 
       $cartProduct->setCart($cart); 
       $cartProduct->setProduct($product); 
       $cartProduct->setQuantity(1); 

       $manager->persist($cartProduct); 
      } 
     } 
     $cart->setDateUpdated(new \DateTime()); 
     $manager->persist($cart); 
     $manager->flush(); 

     return $this->redirectToRoute('cart_list'); 
    } 
+0

Versuchen: '$ products = $ request-> get ('Produkte') -> alle();' –

+0

Anruf auf eine Elementfunktion alle() auf null –

+0

Dann wird die ' $ request-> get ('products') 'liefert ein leeres Array ... du bist sicher, dass 'get (' products ')' funktioniert? –

Antwort

1

Sie sollten einen Standardwert hinzufügen, wenn Sie einen Parameter auf einen bekommen diese Art von Fehler ungültig:

$products = $request->get('products', []); 
Verwandte Themen