spusteni kodu pred vykonanim funkce v presenteru

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

Zdravim vsechny,

existuje nejaka moznost jak spustit kod pred volanim funkce v presenteru? Konretneji mi jde o to, ze se zjisti zda dany zalogovany uzivatel ma pravo na dane view. Je mozne neceho podobneho docilit pomoci anotaci? Pokud ano, prosim o ukazku

samozrejmne muzu do kazde funkce vlozit jako prvni radku neco jako $this->checkSecurity($user,__FUNCTION__)

Pokud by se dalo vyuzit anotaci, tak muj problem s psanim extra kodu odpada. Bohuzel netusim jak spojit anotace a skutecne spusteni kodu v kazdem renderu.

Editoval Jan Navratil (20. 2. 2012 12:48)

RDPanek
Člen | 189
+
0
-

a co takhle před renderView použít actionView? pokud tedy funkcí myslíš renderView.
Druhá možnost je, si tohle zařídit v BasePresenteru

Nox
Člen | 378
+
0
-

Presenter::startUp?

Melmen
Člen | 132
+
0
-

Nevím jestli je to košér, ale používám něco na způsob

public function renderSettings()
{
	if ( !$user->isAllowed(...) ){
	$this->flashMessage('Sem nemáš přístup!','error');
	$this->redirect(':Front:Homepage:default');
	}
	//Tady kód pro přihlášeného uživatele, resp. toho, kdo má právo na renderSettings()
}
Etch
Člen | 403
+
0
-

@Melmen:

Proč máš tohle v render fázi a ne v action fázi??

22
Člen | 1478
+
0
-

Jak píše Nox, ověření práv by mělo být ve startup(), viz. životní cyklus presenteru.

Melmen
Člen | 132
+
0
-

Etch: Protože jsem nevěděl, jak to jinak vyřešit, a protože to funguje :) Ale tohle mě nenapadlo. Přehodím si to do startUp

Etch
Člen | 403
+
0
-

@Melmen:

Já to mám taky přímo ve startup(), ale myslel jsem, že máš nějaký důvod, proč to tam nemáš a proto že to cpeš až do tech pozdních fází(action, render, atd).

Jan Navratil
Člen | 9
+
0
-

Dekuji vsem za odpovedi a za „nakopnuti“,

startup() to krasne resi, protoze budu mit ve $this->action jmeno akce, ktera se ma volat a tim padem se muzu dotazat na jeji anotace. Diky!