IPub\FlashMessages – tak trochu jiné flash zprávičky
- akadlec
- Člen | 1326
Systémové zprávičky mě tak trochu „štvaly“, problematicky jsem je odděloval aby se zobrazily na správném místě. Např. mám v appce akci která se může zobrazit v modálním okně a nebo klasicky a tady mě nastával problém protože jsem musel detekovat co se zobrazuje a podle toho nastavit kde se ta flash zprávička má zobrazit…No a abych to vyřešil nějak rozumně spojil jsem klasickou komponentu zobrazující flash zprávy s potřebnými handlery a vznikla komplexní extension
# Co to umí:
Hlavní je to co jsem zmínil výše, tj. sama řídí zobrazení zprávy. Pokud dojde k zobrazení zpráv v modálním okně, tak již se nenačtou v hlavním layoutu, takže dokážu prioritizovat jejich zobrazení, resp. nemusím se o nic starat a zpráva se zobrazí tam kde má.
Samozřejmostí je také podpora překladů a jak tady @FilipProcházka v některém tématu zmiňoval u zpráv z formuláře, tak tato ext. podporuje jako zprávu i objekt Phrase z translatoru
Tak kdo chce ať využívá, případně reportuje chyby, vychytávky atd.
- David Kudera
- Člen | 455
Jen takový dotaz. Nevyhodí to chybu o neexistující třídě
Kdyby\Translation\Phrase
ve chvíli, kdy v projektu nechci
kdyby/translation a budu instalovat s --no-dev
? Přeci jen
nette/forms taky nezávisí (navíc skrytě) na kdyby.
Ale to se jen tak ptám.. Bylo to to první, co mě prostě napadlo :-)
- akadlec
- Člen | 1326
nope, mělo by to normálně fungovat, aspoň tedy testy projdou ta závislost na nette/forms pro dev je proto protože nette/app chce birdge z forms při spuštění testů.
- David Kudera
- Člen | 455
nene já to myslím tak, že závislost na kdyby/translation je dev dependencies.. aha koukám, že teď už to tam není. Tak jsem to myslel, že třeba na produkci, kde instaluji s –no-dev by se mi kdyby nenačetlo (teda kdybych ho nepoužíval)..
byla to otázka kvůli té metodě message, kde se testuje, jestli je argument instance Phrase. Nebyl jsem si jistý, jestli instanceof nevyhodí chybu, když ta třída neexistuje. Aspoň už vím, že to chybu nehodí
- akadlec
- Člen | 1326
Velice díky @chemix za článek. Jen bych ještě doplnil primární cíl téhle ext. a to je sjednocení zpracování flash zpráviček na jedno místo. Vznikne tak jeden kontejner který přebírá flash zprávičky a pak je zobrazí podle chuti programátora buď třeba v komponentě nebo pomocí JS. Odpadá tak komplikace kdy se např. v komponentách muselo přemýšlet kam se má zpráva poslat, osobně mám totiž raději pokud se flash zprávy řeší na jednom místě, lépe se to pak udržuje.
- akadlec
- Člen | 1326
Takže na podněnty @chemix jsem některé neduhy odstranil a tak nyní je titulek zprávy přeložitelný stejně jako její text a používá stejné parametry jako pro text. Dále je upraveno zpracování parametrů, takže nyní již není nutné vyplňovat všechny ale je možné je přeskakovat takže např:
$flash = $this->notifier->setMessage('Message text: %param%', 'success', 'Message title and %param%', ['param' => 'value']);
Dále byly vylepšeny shortcut metody které již přijímají všechny parametry jako přímá metoda pro přídání zprávy, např.:
$flash = $this->notifier->info('Message text: %param%', 'Message title and %param%', ['param' => 'value']);
Pokud někoho ještě něco napdane, tak klidně piště.