2016-04-14 42 views
1

Bunun bir çöplük/temel soru olduğunu biliyorum, ancak takılıyorum ve yeni bir yardımcı olmak için biraz yardım alabilirim.Hata ayıklama foreach

Neler Yapmaya Çalışıyorum: Kullanıcılarımdaki tüm ürün adlarını almak için bir foreach döngüsüne sahip olmak istiyorum.

Sorun: Foreach döngüsü ikinci yinelemeden sonra durur (arabamda üç şey varsa ve çöplüğüm varsa, yalnızca 2 görüntülenir (birinci ve ikinci)).

Bir foreach döngüsünün ne yaptığını biliyorum. Sanırım problemim değişken isimlerimde yatıyor ama onlarla uğraşmaya çalıştım.

if (is_null($cart) || $cart->getSubmitted(true)) { 
    $cart = new UserCart(); 
    // since new cart no need to check for duplicate product quantity 
    // add product to cart 
     $this->addFlash('notice', 'Creating a new cart because one didnt exist for the user before.'); 
} 
else { 

    $quantity = new Quantity(); 

    //If the cart is set 

    $getProductsInCurrentUsersCart = $cart->getQuantities(); //All Products In Users Cart (ARRAY COLLECTION/PERSITENT COLLECTION) 

    foreach ($getProductsInCurrentUsersCart as $key => $value) { 

     dump($getProductsInCurrentUsersCart); 
     $getProductsInCurrentUsersCart = $value->getProduct()->getName(); //SHOULD BE ALL PRODUCTS IN CART 

     if ($getProductsInCurrentUsersCart === $quantity->setProduct($productBeingAddedToCart)->getProduct()->getName()) { 
      $this->addFlash('notice', 'Comparission was TRUE.'); 
      $quantity->setQuantity($quantity->getQuantity() + 1); 
     } 
     else { 
      $quantity->setQuantity(1); 
      $quantity->setProduct($productBeingAddedToCart); 
      $this->addFlash('notice', 'Comparisson was FALSE.'); 
     } //ENDS IF/ELSE 

    } //EXECUTING ONCE?????????? 


    $cart->setTimestamp(new \DateTime()); // Set Time Product was Added 
    // $quantity->setQuantity(1); // Set Quantity Purchased 
    $cart->setSubmitted(false); // Set Submitted 
    $cart->setUser($this->getUser()); // Sets the User ONCE 
    $cart->addQuantity($quantity); // Add Quantity ONCE 
    $quantity->setUserCart($cart); // Create a UserCart ONCE     
    $em->persist($productBeingAddedToCart); 
    $em->persist($cart); 
    $em->persist($quantity); 
    $em->flush(); 
    $this->addFlash('notice', 'The product: '.$productBeingAddedToCart->getName().' has been added to the cart!'); 
} 

Herhangi bir yardım gerçekten takdir edilmektedir!

+0

Neden döngü içinde '$ getProductsInCurrentUsersCart' listesini yeniden tanımlıyorsunuz? Sanırım sorun bu olabilir ... – fonfonx

cevap

1
$getProductsInCurrentUsersCart = $value->getProduct()->getName(); 

Burada, döngü içindeki liste değişkenini yeniden tanımlıyorsunuz. $ GetProductsInCurrentUsersCart2 ile deneyin ve ayrıca bu satırın altında değiştirin. Bunu çözüp çözmediğine bakın. Sonra daha iyi bir adla gelin :)