Session, delete všeho a části

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Maren
Člen | 23
+
0
-

Ahoj,

v prezenteru mám

public function renderDelCart($id)
            {
                    return $this->basketStorage->delItem($id);

            }

a následně

public function delItem($id)
        {

            $this->ctSession->remove($id);

        }

Potřebuji radu, jak smazat jenom jednu požadovanou položku(dané session)- ta je určena tím „id“. Takhle mi to smázne všechny.
Snad nebudu muset pro každou položku generovat novou session.

Filip Klimeš
Nette Blogger | 156
+
0
-

Předpokládám, že ctSession je instance SessionSection. Potom remove() smaže celou sekci. Potřebuješ volat offsetUnset($id).

Editoval FilipKlimeš (13. 2. 2015 14:06)

Maren
Člen | 23
+
0
-

Tak jsem to vyzkoušel

public function delItem($id)
        {
            $this->basketSession->offsetUnset($id);

        }

a bezúspěšně.
V session mám pole

array (2)
6 => "3"
3 => "3"

a rád bych odstranil jenom tu jednu položku.

Filip Klimeš
Nette Blogger | 156
+
0
-

A jak máš v té session uloženo tohle pole?

Maren
Člen | 23
+
0
-
public function addItem($id, $count)
        {
            if (isset($this->basketSession->items[$id])) {
                $this->basketSession->items[$id] += $count;
            } else {
                $this->basketSession->items[$id] = $count;
            }
        }
Filip Klimeš
Nette Blogger | 156
+
+1
-

Aha, tak potom by mělo stačit

unset($this->basketSession->items[$id]);

Editoval FilipKlimeš (13. 2. 2015 17:50)

Maren
Člen | 23
+
+1
-

Děkuji ti za pomoc.