Flash zprávy – jedno misto

vlkodlak
Člen | 160
+
0
-

zdravím pánové, dočetl jsem si, že „… Komponenta má své vlastní úložiště flash zpráv nezávislé na presenteru …“ viz. https://doc.nette.org/…n/components rozumím tomu správně že pak chyba reportovaná komponentou mi zobrazi někde na „boku“ místo obvyklého místa určeném např. v šabloně @layout.latte. a pokud ano, existuje možnost jak tyto chybové zprávy zobrazovat pouze na jednom místě? např. v šabloně @layout.latte

CZechBoY
Člen | 3608
+
0
-

Vzhledem k tomu, že komponenta má svoji šablonu a dál nevidí tak to není moc možný.
Je ale možné si metodu flashMessage přepsat a ukládat flash zprávy třeba do presenteru.

Šaman
Člen | 2632
+
+1
-

Každá připojená komponenta(*) má přístup k $this->presenter, takže může ty zprávy posílat jemu (a tedy na jedno místo). Teoreticky z pohledu obecného OOP návrhu to není 100% čisté, ale presentery mají několik dalších výjimek, takže prakticky to ničemu nevadí. Kromě flashmessage a možná přesměrování se tomu ale vyhýbej – komponenta by na presenter neměla moc spoléhat. A v žádném případě si z něho nesmí třeba tahat data, to už je velký prohřešek a potencionální zdroj chyb.

(*) připojená komponenta znamená, že to není možné použít v konstruktoru (ten proběhne před připojením k presenteru), jinak by neměl nastat problém

Editoval Šaman (18. 10. 2017 18:11)

vlkodlak
Člen | 160
+
0
-

děkují Vám za cenné rady a tipy, ušetřili jste mi hodně cenných hodin lamentování a předělávaní aplikační logiky … to mně přivádí k myšlence nedávat komponentě významnou programovou funkčnost, ale jen rutinní aktivitu

CZechBoY
Člen | 3608
+
+1
-

Funkcnost je v modelove vrstve a ne prezentacni :-)