Flash messages – rozlišení
- Kcko
- Člen | 468
Čistě teoreticky.
Máme 3 sloupcový web.
V levém sloupci bude např. kontaktní formulář, v prostředním obsah, v pravém přihlašovací formulář.
Pokud bych v každém sloupci používal výpis flash messages tak se mi při konkrétní akci (ať už se jedná o odeslání formuláři, čehokoliv v prostředním sloupci či přihlášení v pravém) výpišou na všech 3 místech stejná hláška/y?
Dříve jsem to řešil přes GET parametry. Např. ?contantFormMsg=1/2/3, ?middleBlockMsg=1/2/3, contactFormMsg=1/2/3 …
Jak na to tedy ted? Co mě napadá jako člověka zatím Nette neznalého, je si krom addFlashMessage do sešny uložit „umístění“ a dle toho to kontrolovat. (Tj poznačím si do jakého bloku, který poté vypisuji si vlastně tu flashmessage ukládám).
Lze to tak řešit, nebo nějak lépe?
- akadlec
- Člen | 1326
Mě osobně se tento způsob nelíbí aby každá komponenta či form si ty flashky zobrazovala sama. Příjde mi to pak dost rozstřílené a nepřehledné. Proto to zatím řeším tak že všechny hlášky se předají do flashes presenteru a v něm je pak fashMessagesControl který ty zprávičky vypíše na jednom místě a tak uživatel vždy vidí hlášku na stejném místě.
- Zax
- Člen | 370
akadlec napsal(a):
Mě osobně se tento způsob nelíbí aby každá komponenta či form si ty flashky zobrazovala sama. Příjde mi to pak dost rozstřílené a nepřehledné. Proto to zatím řeším tak že všechny hlášky se předají do flashes presenteru a v něm je pak fashMessagesControl který ty zprávičky vypíše na jednom místě a tak uživatel vždy vidí hlášku na stejném místě.
Já mám zase jiný názor (to jsem celej já) – v případě ajaxové aplikace mi přijde rozumné zobrazovat flashky přímo před očima uživatele. Po ajaxovém požadavku totiž nedojde k odscrollování nahoru (šlo by to sice udělat, ale přijde mi to dost neintuitivní). A pokud má uživatel vyplý JS, tak ho přesměruji na kotvu, aby byl efekt podobný.
- Oli
- Člen | 1215
Podle mě hodně záleží na využití. Při ajaxových požadavcích má smysl aby se to zobrazovalo před očima (to je jasný). Hezky vyřešený jsem to kdesi viděl, že to bylo jako plovoucí kdesi vpravo nahoře s křížkem pro vypnutí (jinak to zmizelo třeba za 5 sec.). To potom dovoluje aby všechny flashe byly stejně řešený a na stejným místě, ale zase se tomu trochu musí podřídit design…
Jinak bez ajaxu jsem tak mezi. Myslím, že dává smysl zobrazovat interakce s formulářem u toho formuláře, kterej tu zprávu vyvolal (ať už addError nebo flashMessage). Všechny ostatní flashe mám zpracovávaný přes presenter na jednom místě…
- Zax
- Člen | 370
Oli napsal(a):
Podle mě hodně záleží na využití. Při ajaxových požadavcích má smysl aby se to zobrazovalo před očima (to je jasný). Hezky vyřešený jsem to kdesi viděl, že to bylo jako plovoucí kdesi vpravo nahoře s křížkem pro vypnutí (jinak to zmizelo třeba za 5 sec.). To potom dovoluje aby všechny flashe byly stejně řešený a na stejným místě, ale zase se tomu trochu musí podřídit design…
Jinak bez ajaxu jsem tak mezi. Myslím, že dává smysl zobrazovat interakce s formulářem u toho formuláře, kterej tu zprávu vyvolal (ať už addError nebo flashMessage). Všechny ostatní flashe mám zpracovávaný přes presenter na jednom místě…
Hmm plovoucí okýnko mě, přiznám se, vůbec nenapadlo. Ono ani nemusí být vpravo, v pohodě by myslím stačilo uprostřed (v případě centrovaného layoutu). Když se to dobře nastyluje, tak pak může být snad i úplně jedno, jestli je to v rámci presenteru nebo komponenty. Osobně nerad vážu flashky na presenter právě kvůli tomu ajaxu, protože se tím vytváří závislost na nějakém konkrétně pojmenovaném snippetu v presenteru, což mi nepřijde úplně ono. Ale dobrý tip, určitě někdy zkusím :-P
- David Kudera
- Člen | 455
My třeba v našem projektu používáme něco na tento způsob: link. Stačí třeba jen kliknout na přihlásit se.
- akadlec
- Člen | 1326
No to je něco za působ Growl to jsem taky nasazoval. To byl taky důvod proč jsem si všechny flashky předával do presenteru a v presenteru jsem si je pak buď poslal v payloadu a nebo vložil jako json do stránky a JS se pak postaralo o jejich vykreslení. Ale je tu ta závislost si to někde „hromadit“ aby se to pak nemuselo vyzobávat po stránce i když i to by šlo jak nonJS fallback.