Modely v šabloně – špatný přístup?
- elevate
- Člen | 31
Ahoj,
jaký je důvod oddělování modelu od view? Není zbytečné mapovat
všechna data do proměnných v šabloně?
Proč nepoužívat rovnou:
{foreach $userFacade->getUsers() as $user}
ale místo toho to si v render metodě kolekci uživatelů nacpat do šablony? Čímž často přicházínme o „lazy“ přístup, když potřebujeme data například nějak formátovat. (pokud si teda nebudeme předávat jen closures).
Prosím nechci slyšet pouze že to porušuje nějaké MVP, to mě příliš nezajímá. Zajímali by mě konrétní výhody a nevýhody.
- mystik
- Člen | 312
Nevýhody: Narazíš pokud nastane problém, že:
- chceš seznam uživatelů načíst odjinud
- chceš jen změnit vzhled, ale seznam uživatelů načítat stejně
- změníš rozhraní tvého modelu a rozbijí se ti šablony
EDIT: U takovéhohle jednoduchého řešení se ti to ještě moc neprojeví, ale představ si, kdyby jsi potřeboval časem té metodě předat nějaký parametr nebo udělat složitější logiku – třeba filtraci, stránkování, … přesně jak píše @norbe. Pokud to budeš mít v šabloně půjde to o dost hůř.
Editoval mystik (8. 7. 2014 12:11)
- norbe
- Backer | 405
Ono dokud to máš takto jednoduché tak zkutečně těch výhod asi moc nebude. Výhody přichází ve chvíli, kdy potřebuješ jednotlivé hodnoty mít nějak vyfiltrované či jinak zpracované. Představ si například jak v šabloně filtruješ zboží podle uživatelem zvolených výrobců, ceny, parametrů. Přidej stránkování, různé způsoby řazení a pak to všechno zkus nacpat do šablony :-)
O lazy přístup přijdeš jen pokud jsi sám „lazy“, nikdo ti nebrání proměnou nastavovat jen v případě, že byl invalidovaný daný snippet či když se renderuje celá stránka ;)