Proc se pouzivaji signaly?
- Vladik_hk
- Člen | 50
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.
- bojovyletoun
- Člen | 667
ref.
Někde jsem to psal jednou. Prozatím nerozlišuj signál u komponent a
u presenteru.
jak to popsat.
- 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
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ů.