Una View puรฒ presentarsi sotto forma di una comune pagina Web o di un frammento di pagina Web (come per esempio unโintestazione, un footer o un menรน laterale).
Le View prevedono un ordinamento gerachico, opzionale, per via del quale รจ possibile porre una View allโinterno di unโaltra View ma, a differenza dei Controllers, queste non possono essere chiamate direttamente tramite URL, devono invece essere caricate tramite un Controller.
La creazione di una View richiede una procedura estremamente semplice, si consideri per esempio il seguente listato scritto in puro markup HTML:
<html>
<head>
<title>Sito Internet creato con CodeIgniter</title>
</head>
<body>
<h1>Creare un sito Web con il modello MVC</h1>
</body>
</html>
Il codice proposto dovrร essere digitato in un file, chiamato per esempio "primaview.php", che dovrร essere salvato sul percorso:
system/application/views/
A questo punto la View potrร essere richiamata attraverso una semplice istruzione:
$this->load->view('nome_view_senza_suffisso_php');
Lโistruzione accetterร come parametro il nome della View (senza il suffisso .php) e dovrร essere inclusa allโinterno di un Controller, come per esempio quello creato nel paragrafo precedente che per questo scopo potrร essere modificato nel modo seguente:
<?php
// istanza di un semplice View in un Controller
class Sito extends Controller {
// definizione della funzione predefinita per la classe
function index() {
//chiamata alla View
$this->load->view('primaview');
}
}
?>
Ora la digitazione dellโURL:
miosito.com/index.php/sito/
non porterร piรน alla restituzione in output di una stringa tramite "echo", ma alla visualizzazione del piccolo template creato tramite la View. Naturalmente, allโinterno di un Controller sarร possibile effettuare chiamate simultanee a piรน View, come nellโesempio seguente:
<?php
// istanza di un semplice View in un Controller
class Sito extends Controller {
// definizione della funzione predefinita per la classe
function index()
{
// inserimento dinamico dei dati
$data['page_title'] = 'Sito Internet creato con CodeIgniter';
// chiamata alle View per le diverse componenti della pagina
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
}
?>
Come รจ possibile notare dal codice proposto, per la definizione del tag <title> della pagina nel listato viene utilizzato un meccanimo previsto da CodeIgniter denominato inserimento dinamico dei dati; questo prevede che i dati siano passati da un Controller a una View sotto forma di un array o di un oggetto; la sintassi da utilizzare sarร la seguente:
// passaggio dinamico di dati sotto forma di Array
$data = array(
'title' => 'Sito Internet creato con CodeIgniter',
'heading' => 'Creare un sito Web con il modello MVC',
'message' => 'Blah blah blah blah!'
);
// caricamento della View
$this->load->view('blogview', $data);
// passagguio dinamico di dati sotto forma di oggetto
$data = new Nomeclasse();
// caricamento della View
$this->load->view('sitoview', $data);
Quindi un Controller che effettua una chiamata ad una View basata sul passaggio dinamico di dati potrebbe essere contenuto in un file strutturato in questo modo:
<?php
// istanza di un semplice View in un Controller
class Sito extends Controller {
// definizione della funzione predefinita per la classe
function index() {
// inserimento dinamico dei dati
$data['title'] = "Sito Internet creato con CodeIgniter";
$data['heading'] = "Creare un sito Web con il modello MVC";
// caricamento della Vieww
$this->load->view('sitoview', $data);;
}
}
?>
Anche il file "sitoview.php" dovrร essere modificato, infatti ora dovrร essere in grado di raccogliere i dati passati dinamicamente attraverso il Controller:
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
Le variabili presenti nella View verranno quindi sostituite con i valori ad esse associate tramite il Controller.