Více verzí flashMessage

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

Nazdárek,

nedalo by se nějak rozšířit flashMessage, aby se daly použít na více místech s jiným obsahem? Příklad použití:

Na stránce mám 2 formuláře. Jedním se přidávají nějaké kategorie a druhým se do vybrané kategorie přidá obsah. Po úspěšném vložení je vždy vhodné přesměrování a upozornění uživatele, že se operace povedla – v případě neúspěchu je zde jen addError. Já používám něco ve smyslu:

$this->flashMessage('Kategorie byla úspěšně vytvořena.', 'ok');

Tuto zprávu pomocí CSS nastyluji jako úspěšnou (NE error) hlášku – např. zeleně. V šabloně to ale při 2 a více formulářích nemůžu použít, protože nemám jak rozlišit, kdy bude tato hlášak použita pro první formulář a kdy pro druhý.

S pozdravem a poděkováním
Bernard

jasir
Člen | 746
+
0
-

flashMessages je implementováno v třídě Control, takže každá komponenta od Control dědící (včetně Presenteru) má vlastní úložiště. Tak si ty na ty formuláře udělej vlastní komponenty a můžeš pak tahat flashMessages z nich.

Editoval jasir (21. 7. 2009 15:40)

PetrP
Člen | 587
+
0
-

Nejsem si jistej ale myslim že to není pravda, protože ten control si uklada flashMessage na presenteru ne? tedy jsou globálni pro celej componentovej strom

jasir
Člen | 746
+
0
-

PetrP napsal(a):

Nejsem si jistej ale myslim že to není pravda, protože ten control si uklada flashMessage na presenteru ne? tedy jsou globálni pro celej componentovej strom

Teď jsem to zkoušel, každá control má vlastní úložiště zpráv.
V template controlu je k dispozici pole ‚$flashes‘, které obsahuje jen jeho zprávy.
viz

PetrP
Člen | 587
+
0
-

Aha, ale ukládají si je všechny na presenteru, ale pod jiním id $this->getParamId('flash');

Žil jsem v přesvědčení že si flash message můžu obhospodařovat na jednom místě.

jasir
Člen | 746
+
0
-

PetrP napsal(a):

Aha, ale ukládají si je všechny na presenteru, ale pod jiním id $this->getParamId('flash');

Ano, tak.

Žil jsem v přesvědčení že si flash message můžu obhospodařovat na jednom místě.

Když budeš využívat jen flashmessages presenteru, tak ano. :-)

kravčo
Člen | 721
+
0
-

jasir napsal(a):

PetrP napsal(a):

Žil jsem v přesvědčení že si flash message můžu obhospodařovat na jednom místě.

Když budeš využívat jen flashmessages presenteru, tak ano. :-)

To dosiahneš volaním:

$control->getPresenter()->flashMessage(...);