Php 为Symfony控制器中的foreach提供的参数无效
我试图在我的CartController中将产品添加到当前登录的用户购物车,但当我单击“添加到购物车”按钮时,它会引发以下异常:警告: 为foreach()提供的参数无效 下面是我的addToCart函数:Php 为Symfony控制器中的foreach提供的参数无效,php,symfony,foreach,Php,Symfony,Foreach,我试图在我的CartController中将产品添加到当前登录的用户购物车,但当我单击“添加到购物车”按钮时,它会引发以下异常:警告: 为foreach()提供的参数无效 下面是我的addToCart函数: /** * @Route("/cart/add", name="cart_add") */ public function addToCartAction(Request $request) { $manager = $this->g
/**
* @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');
}
获取参数时应添加默认值以避免此类错误:
$products = $request->get('products', []);
尝试:
$products=$request->get('products')->all()
调用null上的成员函数all(),$request->get('products')
提供了一个空数组。。。您确定get('products')
有效吗?尝试查看var\u dump($request->get('products'))
dump($request->all())返回的内容,您将看到设置了哪些参数,但正如Anna所说,看起来您没有设置$products