MVC met template

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

Loek Lemmens

Loek Lemmens

28/09/2021 21:20:15
Quote Anchor link
Hallo,


Het is misschien een stomme vraag maar ga hem toch stellen.
Ik ben bezig met een MVC framework.
Het framework heb ik draaien maar wil gebruik maken van templates.
Zou ik de views kunnen zien als een stuk template of voeg je in de views weer een template toe?

Stel je maakt onderscheid tussen berichttypes page en post
Dan heb ik een view en controller voor page en post.
Voeg ik dan een template voor page in de view of gebruik je gelijk de view zelf waarin je de template gaat bouwen?

Gr. Loek
 
PHP hulp

PHP hulp

20/10/2021 06:40:16
 
Ozzie PHP

Ozzie PHP

28/09/2021 23:46:48
Quote Anchor link
>> Het is misschien een stomme vraag maar ga hem toch stellen.

Veronstschuldig jezelf alsjeblieft nooit meer voor het stellen van een vraag. Niemand is alwetend, dus gewoon vragen als je iets niet weet.

>> Zou ik de views kunnen zien als een stuk template of voeg je in de views weer een template toe?

Het hangt vooral af hoe jij het zelf wil invullen, wat je zelf prettig/makkelijk vindt. MVC geeft een abstracte inrichting van je bestanden aan. In je view komt je 'view' data te staan. Een deel van die view-data is telkens hetzelfde. Het dynamische deel komt vanuit je model. In een view zou dus zoiets kunen staan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<p>Beste <?php echo $naam; ?>, welkom op de website.</p>

Hier gebruik je html en php.

Je kunt ook een of ander bestaand template systeem gebruiken, en dan krijg je meer zoiets als dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<p>Beste {{naam}}, welkom op de website.</p>

Wat jij prettig vindt, is geheel aan jouzelf.
 
Ward van der Put
Moderator

Ward van der Put

29/09/2021 10:09:58
Quote Anchor link
Loek Lemmens op 28/09/2021 21:20:15:
Zou ik de views kunnen zien als een stuk template of voeg je in de views weer een template toe?

De view vult een template met data uit het model.
 
Ad Fundum

Ad Fundum

29/09/2021 19:51:28
Quote Anchor link
Wat je moet weten is dat MVC in de PHP hoek problematisch is, omdat MVC ooit bedacht was om een ander probleem op te lossen, en omdat er veel desinformatie is over MVC.

MVC werd bedacht voor het managen van grafische interfaces in gecompileerde code op fat clients. Daar heb je nu vanuit PHP niet veel meer mee te maken, omdat PHP geen grafische userinterface regelt. Tegenwoordig wordt dat voor je gedaan in de browser. PHP stuurt HTML, CSS en vaak ook JavaScript naar de browser om te vertellen wat er moet gebeuren.
Je hebt nu zelfs JavaScript 'frameworks' zoals vue.js, die gebruik maken van het asynchrone ecosysteem in de browser en daarmee weer een soort MVC functionaliteit bieden.

In PHP blijft er in ieder geval weinig over van het originele View concept. Helaas is er niemand die een sluitend antwoord weet over wat een view dan wel precies is. Meestal is een View niets anders dan een template. Een stukje ordinaire HTML, die je met variabelen kunt veranderen. Bijzonder suf, want dat is exact de kern van hoe heel PHP ooit begonnen is en nog steeds werkt. Je hebt er inhoudelijk ook niet veel aan, maar templates helpen toch wel wat om de bulk van HTML te scheiden van de rest van de PHP code, waardoor je meer overzicht hebt over het verloop van je PHP applicatie.
Heb je code die HTML genereert, dan worden die wel eens Widgets genoemd, bijvoorbeeld invoer-widgets voor elk gegevenstype.

Dan de desinformatie. Je kunt MVC heel erg fout bouwen door te stellen dat alleen een controller een view mag aansturen. Dat is pertinente onzin; zelfs in PHP halen views zelf hun informatie uit modellen.

Modellen in PHP kunnen van alles zijn, maar het is gebruikelijk dat gegevens uit een database komen. Je kunt de database een model noemen, of je Active Record implementatie. Maar als je een complexere database hebt, met verschillende informatiegebieden hebben mensen het snel over domein modellen. Maar daar heb je ook niet veel aan omdat gegevens in relatie staan tot elkaar, en daarmee zijn de verschillende domeinen niet strikt begrensd, het loopt in elkaar over.

Er zijn mensen die ORM gebruiken, de gegevens-layout wordt door PHP bepaald, en de database wordt als een soort slave behandeld.
Het meest bekende voorbeeld hiervan is Doctrine. In Doctrine is het gebruikelijk om de noodzakelijke database metadata dubbel in PHP comments te zetten, de comments te laten analyseren door PHP code, om daar vervolgens weer iets slims mee te doen. Het is niet alleen dubbel werk omdat je daar al een database voor hebt, het levert ook nog eens trage code op. Inmiddels is men bij Doctrine ook begonnen met een 'database eerst'-benadering.

Dan heb je nog de babylonische spraakverwarring.
Het is niet alleen onmogelijk om views te maken per informatiedomein. Databases hebben ook nog hun eigen Views. Deze bestaan doorgaans uit eerder ge-parse-te SELECT statements, waarvan het resultaat al dan niet tijdelijk wordt opgeslagen ("materialized view").

Doorgaans heeft een View in PHP de functie van doorgeefluik van een database VIEW, en drapeert om de gegevens heen HTML, zodat het toonbaar wordt in de browser. De PHP views kan je vervolgens hergebruiken in andere plekken om dezelfde soort data op dezelfde manier te laten zien.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.