flash message vyvolané v modelu model
- Nox
- Člen | 378
Buď předat nějaký jiný model co to bude shromažďovat, nebo
v poslední době mě láká myšlenka sem tam použít nějaký Result objekt
(podobně jako je Http Response), který zapouzdří info a výsledek
proběhlého procesu a jedno z toho by bylo pole s chybami (možností je
samozřejmě víc, předat callback, předat presenter,
shromažďovat si pole s chybami atd., ale to se mi až tak nepozdává)
Editoval Nox (1. 5. 2013 13:15)
- Marek Šneberger
- Člen | 130
Nebylo by lepší / čistější si v presenteru odchytávat nějakou vyjímku z modelu, a v presenteru s ní pracovat?
- Draffix
- Člen | 146
Nebo to vyřešit pomocí vlastních výjimek a ty si pak odchytit v nějaké třídě a podle toho reagovat? Nicméně toto řešení se mi zdá nejvhodnější.
- Nox
- Člen | 378
To mě napadlo nejdřív taky, jenže co když chci výjimku jen zaznamenat ale pokračovat dál?
Například: zpracovávám 10 nezávislých úloh vybraných dle určité logiky, u jedné vypadne spojení s DB (runtime exception), ale já bych radši, aby se dokončilo aspoň těch 9, když to jde.
Udělat by to asi šlo, ale v presenteru už by musela být určitá business logika, která by umožnila process od správného místa znovu spustit, nebo něco takovýho.
- llook
- Člen | 407
Model by měl být nezávislý na tom, jak ho view bude prezentovat, tzn. v modelu nejsou žádné flash messages, žádné chyby formuláře apod.
To s těmi 10 úlohami bys mohl udělat třeba tak, že modelová metoda pro jejich spuštění by vracela nějaký results objekt, ze kterého by se uživatel modelu (tj. presenter) dověděl, jak to dopadlo. Cca takhle:
public function renderDesetUloh()
{
$result = $this->model->runTenTasks();
if ($result->numberOfFailed > 0) {
$this->flashMessage("Bohužel $result->numberOfFailed úloh z $result->numberOfTasks selhalo.");
}
else {
$this->flashMessage("Všech $result->numberOfTasks proběhlo OK.");
}
}