Jen Formulare z Nette + pridat Session z Nette. Jak na session?

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

Pouzivam z Nette jen formulare (a jsou paradni..) :)

V aplikaci pouzivam i session (nastavuji pomoci PHP), ale rad bych je spoustel pres Nette.
Pokud spustim session z PHP nemuzu pouzit $form->addProtection – Nette protestuje, ze nemuze nastavit ‚session.gc_maxlifetime‘ na ‚10800‘.

Rozchodit jen formulare (podle dokumentace) je snadne:

require 'Nette/loader.php';
use Nette\Forms\Form;

Ale nedari se mi v Nette rozchodit Session tak, abych byl schopen nastavit expiraci a dalsi parametry, ktere nastavuju pres PHP. (Dokumentaci Nette jsem si prosel, ale jsem z ni zmaten.)

Muzete mi po lopate rici, jak a co je nezbytne nutne nacist, aby se mi pres Nette spoustely i Sessions a dokazal nastavit zejm. expiraci, session.cookie_secure, session.save_path ?
Soubory bootstrap a .neon mi zatim unika – neco jsem zkousel, ale nedopadlo to.
Diky

Editoval JJ (28. 1. 2013 0:28)

Šaman
Člen | 2666
+
0
-

Ideální je začít projekt na čistém Sandboxu (ten je v dostribuci Nette a obsahuje prázdný projekt). Jediné, co musíš upravit, abys pak měl skutečně prázdný projekt jsou šablony @layout.latte a homepage/default.latte.
Pak by mělo všechno fungovat a pokud ne, snad se doptáš tu. Za sebe mohu říct, že jsem Session v Nette zatím neměl nikdy potřebu nijak nastavovat a Session i addProtection() používám.

besanek
Člen | 128
+
0
-

Rozjet samotné session nemusí být zrovna jednoduché, protože vyžaduje Http\Request a Http\Response. Netestoval jsem to a nejsem si jist čistotou řešení, ale mělo by stačit takhle. Snad to nebude dělat problémy.

$request = new Nette\Http\RequestFactory;
$request->setEncoding('UTF-8');
$request = $request->createHttpRequest();

$response = new Nette\Http\Response;

$session = new Nette\Http\Session($request, $response);

Pak už normálně pracuješ se třídou Nette\Http\Session.
Například životnost nastavíš tahle.

$session->setExpiration('+14 days');

Nicméně asi zauvažuj převést celou tvou aplikaci pod Nette, ušetříš si čas s podobnými experimenty.

Editoval besanek (28. 1. 2013 13:19)