2013-01-25 2 views
0

Сначала я добавил сессию, то я напечатать свою сессию, он выглядит совершенно нормально здесьUpdate узел сеанса массива + ZF2

Array 
(
[14] => Array//(main key is my restaurant Id) 
    (
     [retaurantDetail] => Array 
      (
       [restId] => 14 
       [restaurantName] => Barca 
       [published] => 1 
       [timings] => 10 to 10 
       [normalCost] => 150 
       [logo] => 44f7afcffb0aeea5c69ccee9041cab84.jpg 
       [email] => [email protected] 
       [phone] => 741258 
      ) 

     [menuArray] => Array 
      (
       [70] => Array // (menu ID is the Key) 
        (
         [menuId] => 70 
         [productId] => 35 
         [productName] => Coca Cola 
         [categoryTitle] => Beverages 
         [categoryId] => 52 
         [price] => 100 
         [attributeName] => 1.5L 
         [isDefault] => 1 
         [qty] => 1 
        ) 

      ) 

    ) 
) 

Теперь я добавить некоторую логику, если какой-то один раз добавить, что меню в оных в корзину Вкратце он/она добавляет плюс 1 шт в этом меню, то здесь мой код (код еще не завершен, но теперь я сосредоточен на просто обновить QTY)

  foreach($session->cartSession as $sessionKey=>$sessionVal) 
      { 

         foreach($sessionVal['menuArray'] as $sessionMenuKey=>$sessionMenuVal) 
         { 

          if($sessionMenuKey == $post_data['menuId']) 
          { 
           echo"<pre>"; print_r($sessionMenuVal['qty']); echo "</pre>"; 
           //$qty = $session->cartSession[$restaurantDetail['restId']]['menuArray'][$sessionMenuKey]; 
           $sessionMenuVal['qty'] = $sessionMenuVal['qty']+1; 

           echo"<pre>"; print_r($sessionMenuVal['qty']); echo "</pre>"; 

          } 

         } 
      } 

Что мне не хватает Я хочу updatre количество сеансов.

каждый раз, когда я нажимаю добавить это показывает 1 Кол-во, то я добавляю плюс 1 Кол-во на него, то он показывает 2 после того, как потом снова показывает 1 Кол-во :(.

+0

Просто наконечник для лучшей читаемости , используйте отрицание для своих ограничений, то есть не делайте (если (если (если))), то скорее сделайте, если (! cond) {return;}, если (! cond2) return; – Sam

+0

Я понимаю @sam ok Я удаляю Ifs :) –

+0

@Sam Я отредактировал мой код, пожалуйста, просмотрите его и дайте мне знать, что мне делать? –

ответ

2

Вы никогда не писать обратно в сессии .. .

Если я понимаю ваш код правильно, должно работать. Проверьте правильность массива гнездящихся моего кода в случае, если он не работает из коробки.

// Somewhere on top, use this for your loops 
$cartSession = $session->offsetGet('cartSession'); 

// Inside your matched loop 
$currentQty = $sessionMenuVal['qty']; 
$cartSession[$sessionKey][$sessionMenuKey]['qty'] = ++$currentQty; 

// After your loops at the end 
$session->offsetSet('cartSession', $cartSession); 
+0

Я пробовал этот путь уже, но все это для каждого цикла, когда я снова печатаю этот сеанс, этот вывод снова показывает только 1 qty :) –

+0

Я думаю, что мне нужно использовать метод $ session-> offsetSet, который я не понимаю. Как использовать этот :( –

+0

См. Обновление, кроме того, проверьте источник Zend \ Session;) https://github.com/zendframework/zf2/blob/master/library/Zend/Session/Container.php#L378 – Sam

 Смежные вопросы

  • Нет связанных вопросов^_^