Flash messages – rozlišení

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

Č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?

Jan Endel
Člen | 1016
+
0
-

Ideálně to řeš tak, že dané formuláře budou obaleny komponentou a každá komponenta si umí flashmessage vyřešit sama, takže nad kontaktním formulářem se budou ukazovat flashmessage kontaktního formuláře a nad přihlašovacím formulářem flashmessage přihlašovacího formuláře.

MartinitCZ
Člen | 580
+
0
-

Lepší a čistější způsob, než popisuje @Jan Endel neexistuje.

akadlec
Člen | 1326
+
0
-

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
+
0
-

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ý.

akadlec
Člen | 1326
+
0
-

No nějaký miniform budiž, ale obecně se mě hodně nelíbí pokud ty zprávy padají různě po webu. Navíc se pak v případě že se form vykresluje ručně musí pro každý řešit vlastní vykreslení zpráv atd.

Oli
Člen | 1215
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.