argumenty pro onLoggedIn a onLoggedOut

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

V dokumentaci se píše, že se dá přidat nějaká událost po přihlášení nebo odhlášení. Mám to tedy nějak tak:

$this->user->onLoggedIn[] = array($account, "setOnline");?>

Ono to příslušnou metodu v objektu opravdu vykoná, jenže nevím, jak metodě přidat ještě nějaké argumenty… Hledal jsem, ale o této funkci se nikde nepíše.

Editoval Loric (8. 7. 2010 20:22)

Majkl578
Moderator | 1364
+
0
-

Tvůj callback dostane jeden parametr – instanci třídy Nette\Web\User. Viz source.

Loric
Člen | 14
+
0
-

No to sem nasel v ladence, ale myslel sem, ze to jde nejak zmenit, tak asi ne no :( budu to muset nejak poresit..

Majkl578
Moderator | 1364
+
0
-

Loric napsal(a):

myslel sem, ze to jde nejak zmenit

Co bys chtěl změnit?

Loric
Člen | 14
+
0
-

ale ty parametry :D nebo to jde?

DocX
Člen | 154
+
0
-

Smyslem těhle callbacků je ošetření nějaké události. K té události se většinou váží nějaké další informace. V tomhle případě je to událost přihlášení a váže se k ní instance User.

Jestli chceš předávat handleru nějaké vlastní parametry navíc, nedovedu si to představit jinak, než že bys je chtěl zadal „staticky“ na místě, kde ten callback vkládáš. To znamená, že ty tvoje parametry nebudou a ani nemůžou být nějak ovlivněny tou vzniklou událostí. Potom ale přece můžeš jednoduše udělat nějakou jinou „globální statickou“ proměnou, kterou z té funkce budeš moc vidět. Třeba když tam teď máš nějaký objekt `$account˙, nad kterém se jako callback volá funkce, tak ty tvoje parametry můžeš navěsit do něj. Záleží na tom, jestli to co chceš v té funkci vidět se tam hodí dát.

Jinak taková rada do života: Nesnaž se měnit design, ale pochop ho a přizpůsob se mu.

Loric
Člen | 14
+
0
-

Dík za rady, už asi vím jak na to :)