MVC: redirect z modelu je koser?

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

Zdravim vsechny,

chtel bych se zeptat, zda je z pohledu MVC modelu v poradku provest redirect z modelu?
Kdyz mi model vyhodnocuje nejakou logiku aplikace, tak je i mozne, ze se dostane do stavu, kdy chci provest redirect → z tohoto pohledu bych rekl, ze ano … ale nejsem si tim jisty a tak bych se chtel zeptat zkusenejsich + bych poprosil o pripadne reseni, pokud to model delat nema.

Diky moc.

duke
Člen | 650
+
0
-

Není to v pořádku. Redirekce (a obecně jakákoli komunikace mezi tvou aplikací a klientem, který ji používá) je věcí prezentační vrstvy, tj. spadá do view. Pokud, jak říkáš, tvůj model vyhodnocuje nějakou logiku aplikace, pak může o výsledku této operace (např. o nějaké konkrétní změně v modelu) informovat view (nepřímo, na vyžádání view) a view vrstva už se podle toho zařídí např. tak, že vyvolá redirekci.

ras
Člen | 135
+
0
-

Diky za potvrzeni .. ja jsem si to myslel, ale protoze je to jednodusi, tak me to napadlo i pouzit … lec duvody chapu a reseni je mi pres vyzadani z Presenteru tez jasne.

Diky.

Filip Procházka
Moderator | 4668
+
0
-

Košér by bylo vyhazovat nějakou výjimku. Tu odchytíš a pak přesměruješ, nebo ji obalíš s BadRequestException (v presenteru)

Editoval HosipLan (4. 1. 2012 23:14)

duke
Člen | 650
+
0
-

To, o čem mluví HospiLan, se hodí pro případ, že došlo k neplatné operaci modelu (např. dotaz na neexistující data, či odmítnutí přístupu k operaci). Obecně ale může presenter chtít redirektovat i po zdařilé operaci modelu, a v takových případech se k tomu výjimka IMHO nehodí a vhodnější je to pak řešit buď přes návratovou hodnotu volané metody modelu nebo přes notifikační mechanismus (viz např. zde: https://cs.wikipedia.org/wiki/Observer).