Použití startup() s načítám session

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

Zdravím,
snažím se do HomepagePresenteru dostat session a nejsem si jist jestli je to co mám správné řešení. Přijde mi to takové, no nevím jak to říct, prostě divné.

Mám v bootstrapu.php

// Session
$configurator->container->session->setExpiration('+ 90 days');
$configurator->container->session->start();

HomepagePresenter.php

class HomepagePresenter extends BasePresenter
{

    private $auth_session;

    public function startup() {
        parent::startup();
        $this->auth_session = Nette\Environment::getSession('authSession');
        $this->auth_session->userName = "Admin";

        $this->myMethod();

    }

    public function myMethod()
    {
        Nette\Diagnostics\Debugger::dump($this->session->userName);
    }
}

Nejsem si vůbec jistý jestli je to zapsané správně. Stále mi dělá problém pochopit principy nette (přece jenom je to něco úplně jiného než frameworky se kterými jsem přišel do styku).

Jakým způsobem se podobné věci jako načítání session a modelů (atd…? pokud něco je) řeší?

EDIT: Ještě mě napadá, dají se položky v SESSION přidávat pomocí array? abych je nemusel pokaždé vypisovat ručně?

$arr = array(
	'userName' => 'Admin',
	'loggedIn' => true,
	'ip' => '128.10.6.486',
);

a pak následně nějak spracovat do session?

Editoval Budry (19. 8. 2011 20:08)

Majkl578
Moderator | 1364
+
0
-

Bootstrap máš dobře. Presenter už ne.

class HomepagePresenter extends BasePresenter
{
	protected function startup()
	{
		parent::startup();
		$this->getAuthSession()->userName = 'Admin';

		$this->myMethod();
	}

	public function myMethod()
	{
		dump($this->getAuthSession()->userName);
	}

	private function getAuthSession()
	{
		return $this->context->session->getSection('auth');
	}
}

EDIT: Ještě mě napadá, dají se položky v SESSION přidávat pomocí array? abych je nemusel pokaždé vypisovat ručně?

Ne a ani k tomu není důvod, sekce se chová jako objekt/pole/iterátor.

Budry
Člen | 88
+
0
-

Fajn, díky to je to co jsem potřeboval
takže jsem se nemýlil, když mi můj kousek přišel divný…

Můžu se zeptat, kde ses dobral k tomuto? Ať prolézám dokumentaci jak chci nějak se mi nic podobného nalézt nepovedlo :(

sekce se chová jako objekt/pole/iterátor.

Mohl bys to prosím trochu osvětlit? Nějak nechápu

Editoval Budry (19. 8. 2011 20:48)

Jan Tvrdík
Nette guru | 2595
+
0
-

Nebo ještě stručněji:

private function getAuthSession()
{
        return $this->getSession('auth');
}
Filip Procházka
Moderator | 4668
+
0
-

@**Budry**: To je prosté, v dokumentaci o Session.