Uložení hodnoty do session v komponentě

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

Zdravím.
Mám formulář přes komponentu v app/components/Login/LoginControl.php a snažím se tam uložit něco do session:

public function processIdentifier(Nette\Application\UI\Form $form ) {
       try {
            $section3 = $session->getSection('myCounter');
            $section3->userName =$form['password']->getValue();

            header( 'Location: /admin/'  );
        }
        catch (Nette\Security\AuthenticationException $e) {
            echo 'Chyba: ', $e->getMessage();
        }
    }

Vypisuje mi to chybu:

Call to a member function getSection() on a non-object

Předem díky za radu.

hAssassin
Člen | 293
+
0
-

tohle volas asi v prezenteru, ze? Myslim tu metodu processIdentifier()? Potom bys k session mel pristupovat pres $this->session->getSection('myCounter'); aneb PHP neni C++ :-)

esorimmer
Člen | 23
+
0
-

No volám to v prezenteru FrontModule a následně směruju na AdminModule DefaultPresenter.
Když to dám tam, mám prázdnou tu proměnou :-/ Leda bych psal špatně zápis?

Filip Procházka
Moderator | 4668
+
0
-

Proměnnou $session nikde nedefinuješ, jak má PHP vědět, co by v ní mělo být?

Místo $session použíj $this->session. Nebo ještě lépe, presenter na to má zkratku, stačí ti

$section3 = $this->getSession('myCounter');
// zavolá $this->context->session->getSection('myCounter')

Editoval HosipLan (26. 11. 2011 16:44)

esorimmer
Člen | 23
+
0
-
$section3 = $this->getSession('myCounter');

Jsem již zkoušel, ale bez výsledného efektu. Stále NULL.