Events – existuje spôsob ako vytvárať udalosti?

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

Events – existuje spôsob ako vytvárať udalosti v Nette? Niečo na spôsob:

<?php

Event::create('nazov_udalosti', 'Hook::method');

//....niekde kde sa bude volat udalost
$data['bundle'] = 'data';
Event::run('nazov_udalosti', $data);

?>
Filip Procházka
Moderator | 4668
+
0
-

Ano jde, ale né takto hnusně.

https://doc.nette.org/…/smartobject#…

Mám pocit, že jsi dokumentaci nevěnoval moc pozornost.

AndyBrandy
Člen | 7
+
0
-

HosipLan napsal(a):

Ano jde, ale né takto hnusně.

https://doc.nette.org/…/smartobject#…

Mám pocit, že jsi dokumentaci nevěnoval moc pozornost.

Máš pravdu, videl som to, ale hneď som to nepochopil, čakal som niečo v tvare, ako som uviedol v otázke.

Ďakujem za odpoveď :)

Nox
Člen | 378
+
0
-

To odkazované ale není to stejné. To co píše AndyBrandy je pubsub, hosiplanovo je spuštění události na jednom konkrétním objektu.

O ničem přímo v Nette nevim, ale napsat by to mělo jít za pár minut vč. testů. Jestli to budeš mít statické nebo ne je na tobě, volil bych podle velikosti projektu … ale když už tam máš události, tak to asi nějaký mikrowebík nebude, takže asi nestaticky.

Editoval Nox (13. 11. 2012 17:40)

MajklDev
Člen | 2
+
0
-

Mrzí mne, že to Nette vyřešené nemá. Sáhnul jsem tedy po komponentě EventDispatcher ze Symfony2 http://symfony.com/…duction.html . Nainstaluješ to jednoduše pomocí Composeru. https://packagist.org/…t-dispatcher

petr.pavel
Člen | 535
+
0
-

Filipe, ty tvoje Events vypadají dobře, ale není mi jasné, jak s jejich pomocí odesílat e-mail se šablonou Latte s odkazy. Pro výrobu odkazu potřebuji presenter, že? Jak ho dostanu do Listeneru?

Jo a nebyla by verze bez jmenných prostorů? ;-)

PavelJurasek
Člen | 39
+
0
-

Odesílat mail se šablonou z Event Listeneru půjde až bude osamostatněný link generator a template factory, aby jsi mohl tyhle služby využít v eventu samostatně.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Nu, anebo si do toho listeneru předám službu Nette\Application\Application a vytáhnu si z ní presenter, pokud se mohu spolehnout na to, že se událost zavolá po jeho vytvoření.

David Matějka
Moderator | 6445
+
0
-

a nebo si muzes nechat predat Router a Http\Request, rucne vytvorit Nette\Application\Request a predat routeru do constructUrl spolu s aktualni (referencni) url, kterou muzes ziskat z http requestu.

(kdyz vidim tu slozitost, tak bude lepsi si vytvorit sluzbu na generovani odkazu, ktera udela tohleto :) – aspon do chvile, nez dojde k tomu refactoringu generovani odkazu)

Filip Procházka
Moderator | 4668
+
0
-

petr.pavel napsal(a):

Pro výrobu odkazu potřebuji presenter, že? Jak ho dostanu do Listeneru?

V konstruktoru listeneru si vyžádám Application a pak jednoduše

$this->application->presenter->link('//Homepage:');

Dokud nebude generování odkazů kompletně oddělené, nemá smysl to dělat jinak :)

Jo a nebyla by verze bez jmenných prostorů? ;-)

PHP 5.2 podporovat nebudu a jestli to je další vtip na téma „Kdyby je hrozný název“, tak haha a nebyla :)

petr.pavel
Člen | 535
+
0
-

Díky za tip s Application!
Mastit to přes Router a Request jsem zkoušel, je to brutální.

Editoval petr.pavel (1. 5. 2013 19:08)

kedrigern
Člen | 102
+
0
-

Filip: Způsob předávání závislostí to by bylo docela dobré zminit v tom blogu, který si k tomu napsal. Přiznám se, že jsem docela dlouho tápal, jak to udělat univerzálně a přitom nějak alespoň trochu štíhle (nepředávat všude vše).

Jinak díky moc, úžasná práce.

Filip Procházka
Moderator | 4668
+
0
-

@kedrigern přeci konstruktorem! On je snad nějaký lepší způsob? ;)