Prázdná session – Fatal error: Exception thrown without a stack frame in Unknown on line 0

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

Zdravím, mám následující problém, dělám e-shop a přidávám položky do košíku takto:

public function startup()
    {
	parent::startup();
	$this->cart = $this->context->session->getSection('cart');
	//$this->cart->warnOnUndefined = TRUE;
	//if (!isset($this->cart->content)) $this->cart->content = array();
    }


    public function actionAdd($id, $count = 1, $backlink = null)
    {
	if ( isset($this->cart->content[$id]) ){
	    $this->cart->content[$id]['count']+=$count;
	}
	else {
	    $this->cart->content[$id]['product'] = $this->context->productModel->getProduct($id);
	    $this->cart->content[$id]['count']	 = $count;
	}

	$this->flashMessage('Produkt byl přidán do košíku');

	/*if ($backlink !== null) {
	    $this->context->application->restoreRequest($backlink);
	}
	else {
	    $this->redirect('list');
	}*/

	$this->template->cart = $this->cart;
    }

session nakofigurovana v config.neon:

		session:
			options:
				save_path: "%tempDir%/sessions"
				expiration: "+ 7 days"

a jde o to, že session se vytvari (v jinem adresari, to taky nevim proc, ale to je vedlejsi, soubory se session fyzicky existuji), session je nastartovana dump($this->context->session->isStarted()) vyhazuje TRUE a jde o to, ze session, at do ni pridam co do ni pridam mi stale povida ze obsahuje NULL, vsiml jsem si dole na strance hlasky Fatal error: Exception thrown without a stack frame in Unknown on line 0 coz jak jsem se docetl, je chyba v destruktoru, ovsem nic takoveho jsem neobjevil nikde.

Pokud odkomentuju ten redirect, tak mi dokonce ani nevyskoci ocekavana flashmessage ze produkt byl pridan.

Diky za jakoukoliv radu, uz jsem z toho mirne zoufaly.

Filip Procházka
Moderator | 4668
+
0
-
  1. metoda startup je zpravidla protected
  2. Exception thrown without a stack frame se zpravidla objevuje během zpracování v destruktoru, nebo při zavolání register_shutdown_handler, při ukončování scriptu. Zkontroluj si panel, jestli je v pohodě a jestli vypisuje co má. Většinou mi tohle dělal zabugovaný panel (i přímo v Nette)
Jan Endel
Člen | 1016
+
0
-
  1. dik, vim ze je protected nejak mi to tam public neustale samo naskakuje.
  2. DebugBar je v pohode, funguje naprosto bezproblemove. Ten fatal error se vykresli az pod nim ve zdrojovem kodu.
Filip Procházka
Moderator | 4668
+
0
-

Já vím, ale stejně ta chyba vzniká v panelu, schválně ho zkus zakázat

Nette\Debugging\Debugger::$bar = FALSE;
Jan Endel
Člen | 1016
+
0
-

Tak barem to taky neni, nastavil jsem natvrdo na produkcni mod a stejnak porad kosik zeje prazdnotou, pustim se asi do studia samotne session. Pres tvoji metodu mi to porad nechtelo jit, nemohl jsem se dopatrat, kde se na bar navesujou dalsi casti (konkretne routing debuger) a na tom mi to padalo. Ponevads se vesel na false a to se mu nelibilo.

Editoval pilec (30. 7. 2011 19:50)

Jan Endel
Člen | 1016
+
0
-

Tak nakonec vyreseno, bylo to asi zapricineno tim, ze Nette\Database\ActiveRow objekt co mi vraci productModel je na sesnu moc velky, pokud do sesny ukladam jen id vyrobku, tak vse probehne korektne.