Eensch, als je twee daadwerkelijk verschillende pagina's hebt hoor je je business logic te laten bepalen welke weergegeven wordt, niet je presentation logic
Drie verschillende scenario's:
1. Miniem verschil in weergave, login box bijvoorbeeld
Lekker in Smarty gooien, logica scheiden is goed maar DRY eveneens
2. Twee verschillende pagina's met andere content en/of layout
Elke pagina z'n eigen template geven, je content is tenslotte daadwerkelijk verschillend. Bovendien wil je niet drie, vier if/else lussen hebben als je meerdere opties gaat krijgen.
3. Twee pagina's met dezelfde generieke layout maar andere tekst
Tekst dynamisch inladen vanuit je CMS, assignen aan een generieke tekst-weergave template. Geen dubbele layout code en toch je business logic uit je template gehouden
Waar je de scheiding legt is ietwat subjectief in mijn opinie. Ik hou als vuistregel altijd aan dat er geen HTML code op wat voor manier dan ook in m'n PHP files staat. Als er een exception afgevangen en weergegeven wordt bijvoorbeeld zet ik alleen de daadwerkelijke tekst ervan in m'n code (in het meest simpele geval, op meertalige sites enkel een error ID als error.usernameTooShort) en zet ik in de template een {if $error} blok met HTML om de error op te maken neer.
Maar om het loginbox voorbeeld erbij te pakken, hoe ga je aangeven of er een loginbox of een username weergegeven moet worden? Nette optie is in je business logic een check te doen en een variabele te assignen (dus, {if $showLoginBox}) maar ik moet toegeven ook wel eens iets als {if $userName} te gebruiken. Hoe stricter je werkt des te meer semi-overbodige code je produceert. Erg goed voor duidelijkheid maar naar als je een deadline hebt
[
Voor 29% gewijzigd door
FragFrog op 20-06-2008 12:28
]