Bij een MVC indeling maakt een controller een model, en een model maakt een view.
Het verschil tussen views en templates is dat een template het soort output bepaalt, dus html, json, xml en een view doet niets meer dan de data bij bewaren om dit als een soort pakketje in een template te gebruiken.
Bijvoorbeeld een html template:

<h1>Titel: <?php echo $view["title"]; ?></h1>

En de view is dan een object met de data.
Is er ook voor elk soort output een aparte view klasse nodig?
ik denk dat je beter in deze richting kunt denken:

// in de controller
<?php
public function passwordAction() {
$username = "Harry"; // van database

$data = array(
'username' => $username,
);

$this->loadView('views/admin/password.php', $data)
}

public function emailAction() {
$username = "Harry"; // van database

$data = array(
'username' => $username,
);

$this->loadView('views/admin/email.php', $data)
}
?>

views/admin/password.php
<?php
include 'views/admin/header.php';

// specifieke inhoud voor password instellingen

include 'views/admin/footer.php';
?>

views/admin/email.php
<?php
include 'views/admin/header.php';

// specifieke inhoud voor email instellingen

include 'views/admin/footer.php';
?>

Toevoeging op 21/06/2014 10:40:21:

Bij template engines als Twig kun je delen van views overschrijven:

layout.html.twig
<?php
{% block stylesheets %}
<link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700' rel='stylesheet' type='text/css'>
{% endblock %}

{% block title 'Admin' %}

{% block body %}

<div class="page">

<nav>
<ul>
<li>
Home
</li>
<li>
About
</li>
</ul>
</nav>

<div class="content">
{% block content %} // <---------- Hier begint het blok 'content'
<p>Deze inhoud moet nog overschreven worden</p>
{% endblock %}
</div>
</div>

{% endblock %}

?>

index.html.twig
<?php
{% extends 'layout.html.twig' %}

{% block content %} // <----------- Hier overschrijven we de 'content blok' van layout.html.twig !!!
<h3>Welkom {{ username }}</h3>
{% endblock %}
?>

Reageren