Proc se pouzivaji signaly?

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

Ahoj,

mohl by mi nekdo vysvetliti co je to signal, resp. kdy se pouziva signal a kdy normalni request? Jeslti se ptam spravne? Udelal jsem takovou mensi aplikaci a zjistil, ze jsem signaly v prezenterech vubec nepouzil, vystacil jsem si jen s action (na co tedy signaly?). Vsiml jsem si, ze se signaly pouzivaji pri postu formulare, ktery je v komponente. Signaly se tedy pouzivaji jen v komponentach a proc? Sorry, mam v tom zmatek;) Diky moc.

sodae
Nette Evangelist | 250
+
0
-

signál, je změna stavu akce či komponenty. Tedy nějak chceme aby se něco třeba změnilo v akci či v komponentě a tak musíme předat nějaký signál a to je ten signál

Vladik_hk
Člen | 50
+
0
-

To je hezky, ale co si pod tim mam predstavit? Pod tou zmenou akce ci komponenty? Pokud zavolam normalni http request na akci ci komponentu, tak se take zmeni jeji stav. Nebo tady se jedna o ajaxove pozadavky? Kdy pouziju action a kdy handler? Neco mi asi uchazi…

bojovyletoun
Člen | 667
+
0
-

ref.
Někde jsem to psal jednou. Prozatím nerozlišuj signál u komponent a u presenteru.

jak to popsat.

  1. z definice z odkazu. Viz životní cyklus. signál se volá vždy nad aktuálním presenterem a aktuální akcí. Tzn že při zpracování požadavku (alias životní cyklus) ,pokud signál je, tak signál se volá PO akci a před Renderem.

2)analogie GET A POST(signál). GET je určení k Získání(!) dat: (nebrat doslovně)
které se v čase nemění
opakované volání by nemělo dělat nepředvídatelné věci
POST:
jednorázová akce (akce je matoucí termín), smazání dat, odeslání příspěvku, potvrzení objednávky, odeslání peněz
vícenásobné volání je obvykle nežádoucí . Proto po signálu obvykle následuje redirect (ale i nemusí)

Například v mé aplikaci: seznam uživatelů. U každé ho je odkaz na signál (klidně by to šlo řešit mini formulářem) Přepnout. uživatelovi to nastaví v databázi hodnotu z false na true a naopak. A
ten odkaz má tvar prepni! $id a presenteru handlePrepni($id)
no a potom metodat renderdefault, která vypíše data Až po tom signálu.

možná to nebude moc srozumitelné, ale odkaz by měl být.

Jan Tvrdík
Nette guru | 2595
+
0
-

Signály se používají, pokud potřebuješ dělat něco AJAXem v komponentách (tam to ani jinak pořádně nejde) nebo pokud potřebuješ provést akci bez ztráty aktuálních parametrů.