Da sa pouzit session vo Forms/?

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

Ahojte,

v priecinku Forms/ mam vytvoreny formular … da sa tu pouzit session? Ak ano ako? Ked som to dal tak ako v Presenteri, neslo to.

Myiyk
Člen | 321
+
0
-

Session se dá použít snad všude. https://doc.nette.org/…ttp/sessions
K session se dostaň přes konstruktor.

David Matějka
Moderator | 6445
+
+1
-

vytvoreny formular

to znamena co? komponentu s formularem? tovarnu? jak to mas registrovany?

Jestli je to tovarna nebo komponenta s tovarnou, tak si vyzadej pomoci DI sluzbu Nette\Http\Session

a plus takovy cheatsheet: http://nette.matej21.cz/cs/di

Takeshi
Člen | 596
+
0
-

No mam v tom riadny „gulas“

<?php

class SignFormFactory extends Nette\Object
{
        /** @var Nette\Http\Session */
        private $session;

        /** @var Nette\Http\SessionSection */
        private $sessionSection;

        public function injectSessionService(Nette\Http\Session $session, Nette\Http\SessionSection $sessionSection)
        {
                $this->session = $session;
                $this->sessionSection = $session->getSection('mySection');
        }
?>

… rada?

… teda nic nefunguje

Oli
Člen | 1215
+
+1
-

Tohle Nette\Http\SessionSection $sessionSection je v tom konstruktoru navíc, ale co znamená nefunguje? Ted koukám že to není konstuktor. Musí to být konstuktor, inject metody mimo presenter nefungují…

Editoval Oli (3. 3. 2016 20:20)

Takeshi
Člen | 596
+
0
-

Oli napsal(a):

Tohle Nette\Http\SessionSection $sessionSection je v tom konstruktoru navíc, ale co znamená nefunguje? Ted koukám že to není konstuktor. Musí to být konstuktor, inject metody mimo presenter nefungují…

Nebol to __construktor, pretoze skusam vsetko mozne aby mi to islo … original som to mal takto >>>

<?php
class SignFormFactory extends Nette\Object
{

        /** @var Nette\Http\Session */
        private $session;
        /** @var Nette\Http\SessionSection */
        private $sessionSection;


	public function __construct(User $user, Nette\Http\Session $session, Nette\Database\Context $database)
	{
				$this->user = $user;
                $this->session = $session;
                $this->sessionSection = $session->getSection('mySection');
                $this->database = $database;
	}
?>

a nasledne sa ho snazim pouzit v

<?php
public function create()
	{
                $sess = $this->getSession('session');
		...
?>

ale vypisuje chybu …
Call to undefined method App\Forms\SignFormFactory::getSession().

CZechBoY
Člen | 3608
+
+1
-

Predavej jen session. Section si potom vyberes ze session jakou chces.

K session pristoupis pres

$this->session->....

Ps pouzivej tu konstruktorovou variantu.

Takeshi
Člen | 596
+
0
-

CZechBoY napsal(a):

vdaka