Presenter a komponenty s ajaxem
- Skřetík
- Člen | 11
Řeším takový problém s aplikací. Jde o to, že mám Presenter obsahující 3 komponenty
- košík v hlavičce (1)
- košík na stránce (2)
- další produkty na stránce (doporučujeme dokoupit atd.) (3) které mají opět možnost být vloženy do košíku
Rozdělené je tak, že košík v hlavičce je komponenta z BasePresenteru,
na stránce s košíkem pak je jedna komponenta košíku a druhá doporučené
produkty. Problém je, že změna košíku (2) mi musí současně překreslit
i obsah (1), a přidání produktu z (3) musí překreslit (1) i (2). Ono to
samozřejmě jde, komponenta produktů může zavolat
$this->getPresenter()->getComponent('headerCart')->redrawControl('price')
a
$this->getPresenter()->getComponent('headerCart')->redrawControl('count')
nebo rovnou
$this->getPresenter()->getComponent('headerCart')->redrawControl()
,
stejně
jako $this->getPresenter()->getComponent('cart')->redrawControl()
Nicméně mám za to, že tohle není dobré řešení, protože komponenta 3 by neměla vrtat do komponenty 1 ani 2, a ještě když tam lezu skrze presenter, takže to bude asi špatný návrh. Děkuji moc za nakopnutí správnějším směrem.
- Skřetík
- Člen | 11
Technicky asi jediné smysluplné řešení co mě napadá je, že při změně stavu košíku bude košík vědět, že se musel přepočítat, a komponenty headerCart i cart, které si z toho košíku stejně berou informace (počet kusů, co je v košíku, celková suma) si úplně stejně vezmou informaci, že košík byl změněn, ergo ony se musí překreslit.