Presenter vs komponenta: Mela by komponenta resit „vsechno“?

lightteka
Backer | 17
+
0
-

Ahoj,

mam komponentu, ktera zobrazi formular s tlacitkem „Smazat“. Je nutne aby to mohl udelat uzivatel s prislusnou roli. Do komponenty predavam entitu ke smazani (podle id nactenou v actionDelete).

Komponenta po odeslani vystreluje onSuccess, nebo onFailed, na ktere v presenteru reaguji (redirect('this', ['processed' => true]).

Kdyz $processed == true a nebo neexistuje entita, tak zobrazi flash zpravu a zavola return. (To se deje v actionDelete).

V latte pak neco jako

{if $entity}
{control deleteForm}
{/if}

Otazka je, jestli je spravny tohle delat v presenteru, nebo je lepsi cele to presunout do komponenty (to si myslim ja), ktery predam sluzbu pro vytazeni entity z db a sluzbu User pro kontrolu role a z komponenty pak jen budu vyhazovat na onSuccess|Failed ty flash zpravy, ktere se v presenteru naplni a vypisou.

F.Vesely
Člen | 368
+
0
-

Tohle hoďně záleží na tobě, jak ti to vyhovuje. Já například čtení dat z modelu dávám do komponenty, ale zápis a oprávnění nechávám v presenteru. Někdo zase má rád všecho v komponentě a několikrát jsem i četl, že všechno mají v presenteru a do komponenty už posílají připravená data, která jen komponenta správně zobrazí.

Důležité spíše je, abys to měl v celém projektu sjednocené.

Toanir
Člen | 57
+
0
-

Imho je důležitý pamatovat si, že Presenter je stále „jen“ komponenta. Její hlavní specialitou je, že nemá nadřazenou komponentou.

Každá komponenta by toho potom měla dělat „tak akorát“. Já se třeba často snažím presentery využívat pouze pro navigaci (ve spojení s routerem) a jako konektor, tedy pro předávání parametrů požadavku komponentám, který si třeba vytvořím v továrnách, vázání jejich událostí a podobně.

Pokud by toho provazování bylo „až moc“, určitě bych začal zvažovat, že to vyčlením do komponenty.

______ (Poznámka pod čarou:)
do úvozovek tady dávám pojmy který vnímám hodně subjektivně/diskutabilně