Events – existuje spôsob ako vytvárať udalosti?
- AndyBrandy
- Člen | 7
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
Ano jde, ale né takto hnusně.
https://doc.nette.org/…/smartobject#…
Mám pocit, že jsi dokumentaci nevěnoval moc pozornost.
- AndyBrandy
- Člen | 7
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
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
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
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
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
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
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
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
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
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.