Použití startup() s načítám session
- Budry
- Člen | 88
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
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
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
Nebo ještě stručněji:
private function getAuthSession()
{
return $this->getSession('auth');
}