Správnost konfigurace session v konfiguračním souboru

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

Ahoj, snažím se hrát si s configem a vytěžit z něj maximum, a koukám, že se v něm dá nastavit většina věcí, co šla v minulé verzi jen v bootstrapu. Mám ale dotaz, jestli je správně, když expiraci session nastavuji následujícím způsobem:

common:

	services:
		# ...

		session:
			arguments: [ [ expiration: "+ 7 days" ] ]

V builderu se to „zkompiluje“ na

$container->addService('session', function($container) {
	$service = call_user_func(
		array ( 0 => 'Nette\\Configurator', 1 => 'createServicesession', ),
		$container,
		array ( 'expiration' => '+ 7 days', )
	);
	return $service;
}, NULL);

což bylo požadováno, a tím pádem už nemusím v boostrapu volat

$container->session->setExpiration('+ 7 days');

a hlavně je to asi i lepší, že se to nastaví už při vytváření servicu, než až po něm. Trochu mi ale trvalo si s tím hrát, než jsem dospěl k výše uvedenému konci, hlavně tedy jak předat pole jako argument přímo továrně na service, aby se opravdu předal při zavolání Configurator::createServiceSession() :-) Je to ale nejsprávnější způsob, nebo to lze ještě lépe, případně zda-li jsou s tímto postupem spojeny jakékoli možné komplikace? Předem děkuji.


PS:

Tím pádem by možná šlo i přepsat nastavení cesty pro ukládání, co je teď v sandboxu, na výše uvedenou formu, čili jen upravit na

		session:
			arguments: [ [
				save_path: "%tempDir%/sessions",
				expiration: "+ 7 days",
			] ]
Filip Procházka
Moderator | 4668
+
0
-

Mělo by jít nastavit vše co je uvedeno zde.

Config ale umožňuje o něco hezčí syntaxi, neověřoval jsem ale mělo by to jít takto nějak (kvůli druhému argumentu v továrničce)

services:
	session:
		options:
			save_path: "%tempDir%/sessions"
			expiration: "+ 7 days"

Mimochodem [] znamená seznam, lepší je si pamatovat jako v JSON, že se dají používat {}. Nejpřehlednější mi ale přijde vypsat položky pod sebe.

uestla
Backer | 799
+
0
-

Vypadlo ti tam ještě arguments:, ale pak už to funguje, moc děkuju!

Taky se mi nelíbilo psát to do seznamu, odsazování je víc sexy a pohodlnější (i když v NetBeans je to peklo, když odřádkuju, tak je tam asi nějaký randomize na to, jestli se mají použít mezery nebo tabulátory…), především díky absenci čárek.

Čili finálka:

services:
	session:
		arguments:
			options:
				save_path: "%tempDir%/sessions"
				expiration: "+ 7 days"

Ještě dotaz – souvisí klíč „options“ s názvem proměnné předávané továrničce?


PS:

Nestálo by tedy za to přesunout v sadboxu ono zmíněné (ač zakomentované) session.save_path: "%tempDir%/sessions" do takovéto formy? Přeci jen to znamená zavolání interního Nette handlingu session a nevolá se tak ini_set jako právě v sandboxu, ale přímo session_save_path() ?

Editoval uestla (26. 6. 2011 16:35)

Filip Procházka
Moderator | 4668
+
0
-

Já tam to arguments nenapsal schválně, domnívám se, že to funguje i bez téhle úrovně navíc.

uestla
Backer | 799
+
0
-

Mně nikoli, zbuilduje se to bez třetího parametru továrničky :-(

c2c03b0 released on 2011–06–24

David Grudl
Nette Core | 8227
+
0
-

Nahraď options za arguments.