problem se sessions → Indirect modification of overloaded element

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

Ahoj, mám takovýto kód

class HomepagePresenter extends BasePresenter
{
	private $kosik;

        protected function startup()
        {
            parent::startup();
            $this->kosik = $this->getSession("KOSIK");

        }

	public function handleKoupit($id, $pocet=1){ /* kdyby treba min objednavka byla x kusu */

            if ($this->zbozi->isExist($id)){
                $this->kosik[$id]["pocet"] += $pocet;
            }

        }

a v .latte šabloně při kliku na

{link koupit! $item['id']}

mi to hodí
Indirect modification of overloaded element of Nette\Http\SessionSection has no effect
na řádku

$this->kosik[$id]["pocet"] += $pocet;

co jsem přehlédl ? Děkuji.

muflix
Člen | 92
+
0
-

vyřešeno: pole se samo nevytvoří inicializací, ale je potřeba ho nejdříve vytvořit

$this->kosik->polozka2[$id] = Array('pocet' => $pocet);
ViPEr*CZ*
Člen | 817
+
0
-

muflix napsal(a):

vyřešeno: pole se samo nevytvoří inicializací, ale je potřeba ho nejdříve vytvořit

$this->kosik->polozka2[$id] = Array('pocet' => $pocet);

To je ta „černá magie“ v PHP. Asi by to chtělo poznamenat přímo do dokumentace, aby to začátečníky nesvádělo.