Model-View-Controller
From Joomla! Documentation
Joomla maakt uitgebreid gebruik van het [1] ontwerppatroon.
Wanneer Joomla is gestart om een verzoek van een gebruiker te verwerken, zoals een 'GET' voor een bepaalde pagina of een 'POST' met gegevens uit een formulier, is één van de eerste dingen die Joomla doet, het analyseren van de URL om te bepalen welke component verantwoordelijk is voor de verwerking van het verzoek, en de controle aan de desbetreffende component te geven.
Als de component is ontworpen volgens het MVC-patroon, zal het de controle aan de controller doorgeven. De controller is verantwoordelijk voor het analyseren van de aanvraag en het bepalen welke model(len) nodig zijn om te voldoen aan het verzoek, en welke 'view' moet worden gebruikt om het resultaat aan de gebruiker terug te geven.
Het model kapselt de gegevens die worden gebruikt door de component in. In de meeste gevallen komen deze gegevens uit een database, ofwel de Joomla database, of een andere database, maar het is voor het model ook mogelijk om gegevens uit andere bronnen te krijgen, zoals via een web services API die draait op een andere server. Het model is ook verantwoordelijk voor het bijwerken van de database indien nodig. Het doel van het model is de controller en de view te isoleren van de details van hoe de gegevens worden opgehaald of weggeschreven.
De view is verantwoordelijk voor het genereren van de uitvoer die, door de component naar de browser wordt verzonden. Het doet een beroep op het model voor alle informatie die het nodig heeft en formatteert het op de juiste manier. Bijvoorbeeld, een lijst van data-items verkregen uit het model kan in een HTML-tabel worden gezet door de view.
Aangezien Joomla! modulair is opgezet, is de uitvoer van de component in het algemeen slechts een deel van de web-pagina die de gebruiker uiteindelijk zal zien. Als de view eenmaal de uitvoer heeft gegenereerd geeft de component de controle terug aan het Joomla framework, dat vervolgens het template laadt en uitvoert. Het template combineert de uitvoer van de component, en de eventuele modules die actief zijn op de huidige pagina, zodat het aan de browser als een enkele pagina kan worden uitgeleverd.
To provide additional power and flexibility to web designers, who may only be concerned with creating new designs rather than manipulating the underlying code, Joomla splits the traditional view into a separate view and layout. The view pulls data from the model, as in a traditional MVC pattern, but then simply makes that data available to the layout, which is responsible for formatting the data for presentation to the user. The advantage of having this split is that the Joomla template system provides a simple mechanism for layouts to be overridden in the template. These layout overrides (often called "template overrides" because they form part of the template, although actually it is the layout that is being overridden) are bundled with the template and give the template designer complete control over all the output from the Joomla core and any installed third-party extensions that comply with the MVC design pattern.