Ik ben nu al een tijdje aan het experimenteren met een FrontController en een PageController, gecombineerd met wat simpel MVC werk.
Nu vraag ik me echter het volgende af: stel ik wil alle weergaven voorzien van een standaardlayout, hoe pak ik dit dan aan?
Laten we even uitgaan van de volgende omgeving:
- PHP
- Smarty (of een andere template engine)
Request: /ListCars
mapt naar actions.ListCarsAction, die een lijst met auto's opvraagt uit de DAL.
ListCarsAction verwijst door naar views.ListCarsView:
Wat zijn nu nette manieren om iedere View in een standaardlayout weer te geven, ik zit immers met twee soorten templates:
- algemene look & feel
- opmaak voor een bepaalde view
M.a.w.: waar integreer ik de 'overkoepelende' template?
Dit haakt in op een andere vraag: stel dat ik ten alle tijde ergens op de pagina (op iedere pagina in de applicatie) bijvoorbeeld een lijstje met ingelogde users wil laten zien (om maar iets te noemen), hoe handel ik dat af? Het heeft immers niet direct met de huidige View te maken, maar moet wel altijd getoond worden. Op welke manier roep ik dan de bijbehorende Action aan, die deze lijst met ingelogde users opvraagt?
Ik kan me voorstellen dat dit in (bijvoorbeeld) struts op te lossen zou zijn door mbv een custom taglibrary een tag te definieren waarmee ik het lijstje met ingelogde users kan laten zien, maar hoe zou ik zoiets in PHP netjes oplossen, verpakt in een mooi pattern bijvoorbeeld?
Misschien dat ik een beetje de CMS kan opmoet, dat is wat me in deze context het logischste lijkt: een (1) standaardtemplate, met daarin zones die met content gevuld worden.
Na het bekijken van een leuk aantal frameworks heb ik nog niet ontdekt wat voor bovenstaande vragen nu een nette manier is. Met dit topic wil ik graag wat discussie op gang brengen over dit onderwerp.
Ik weet dat over vergelijkbare vragen al een aantal interessante topics voorbij is gekomen, maar miste daarin concrete voorbeelden. Net als het ontbreken van complexere voorbeelden van de meeste frameworks, althans: misschien kijk ik op de verkeerde plaatsen.
Nu vraag ik me echter het volgende af: stel ik wil alle weergaven voorzien van een standaardlayout, hoe pak ik dit dan aan?
Laten we even uitgaan van de volgende omgeving:
- PHP
- Smarty (of een andere template engine)
Request: /ListCars
mapt naar actions.ListCarsAction, die een lijst met auto's opvraagt uit de DAL.
ListCarsAction verwijst door naar views.ListCarsView:
code:
1
2
3
4
5
6
| <html>
<!-- blabla /-->
<div>
{$cars_list}
</div>
</html> |
Wat zijn nu nette manieren om iedere View in een standaardlayout weer te geven, ik zit immers met twee soorten templates:
- algemene look & feel
- opmaak voor een bepaalde view
M.a.w.: waar integreer ik de 'overkoepelende' template?
Dit haakt in op een andere vraag: stel dat ik ten alle tijde ergens op de pagina (op iedere pagina in de applicatie) bijvoorbeeld een lijstje met ingelogde users wil laten zien (om maar iets te noemen), hoe handel ik dat af? Het heeft immers niet direct met de huidige View te maken, maar moet wel altijd getoond worden. Op welke manier roep ik dan de bijbehorende Action aan, die deze lijst met ingelogde users opvraagt?
Ik kan me voorstellen dat dit in (bijvoorbeeld) struts op te lossen zou zijn door mbv een custom taglibrary een tag te definieren waarmee ik het lijstje met ingelogde users kan laten zien, maar hoe zou ik zoiets in PHP netjes oplossen, verpakt in een mooi pattern bijvoorbeeld?
Misschien dat ik een beetje de CMS kan opmoet, dat is wat me in deze context het logischste lijkt: een (1) standaardtemplate, met daarin zones die met content gevuld worden.
Na het bekijken van een leuk aantal frameworks heb ik nog niet ontdekt wat voor bovenstaande vragen nu een nette manier is. Met dit topic wil ik graag wat discussie op gang brengen over dit onderwerp.
Ik weet dat over vergelijkbare vragen al een aantal interessante topics voorbij is gekomen, maar miste daarin concrete voorbeelden. Net als het ontbreken van complexere voorbeelden van de meeste frameworks, althans: misschien kijk ik op de verkeerde plaatsen.