Le View (Viste), sono semplicemente pagine HTML, o sezioni di pagine HTML, che vengono stampate tramite l'utilizzo di un Controller. Nella struttura MVC infatti, una View non viene mai chiamata direttamente, perché questo andrebbe contro la logica stessa del pattern.
Esempi classici di View sono ad esempio la sezione header, la sezione main (o sidebar) e la sezione footer. Richiamando le View in questo modo, la gestione strutturale della pagina resta assolutamente nelle mani del Controller, e questo garantisce un ottima gestione tecnica sia del codice che dell'applicazione stessa.
Caricare un View
Per caricare una View, dobbiamo prima avere creato il relativo file nella cartella application/views
. Il nome del suddetto file è assolutamente facoltativo. Nel nostro esempio di base lo chiameremo struttura.php
ed assumerà la seguente forma:
<!DOCTYPE HTML>
<html>
<head>
<title>Prova CI</title>
</head>
<body>
<h1>Prima pagina in CI</h1>
<p>Questa pagina è caricata dal Controller.</p>
</body>
</html>
A questo punto, per stampare il precedente codice HTML, basterà richiamare il metodo load->view
dell'oggetto CI nel seguente modo: $this->load->view('nome view');
, dove 'nome view' è una stringa che indica il nome del file che contiene la View che stiamo caricando, senza la necessità di utilizzare l'estensione .php
, a meno che non si tratti di una differente estensione (nel nostro caso sarà semplicemente struttura
):
<?php
class Welcome extends CI_Controller {
public function index() {
$this->load->view('struttura');
}
}
?>
Questo pattern gestionale diventa incredibilmente efficace nel caso in cui dobbiamo caricare una struttura HTML completa, ma divisa in differenti sotto-sezioni, che andrà a costituire l'output finale, ad esempio:
<?php
class Welcome extends CI_Controller {
public function index() {
$this->load->view('doctype');
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
}
}
?>
Code Igniter gestirà in modo intelligente tutte le chiamate precedenti concatenandole in ordine cronologico.
Sottocartelle di View
In una applicazioni di grandi dimensione, si presenta quasi sicuramente la necessità di organizzare le viste in differenti sottocartelle. Ad esempio, può esserci la sezione dedicata alle View che fungono da template, quella dedicata alle View che fungono da output HTML diretto, quelle che si occupano dei dati del database, e cosi via. Possiamo dunque creare delle sottocartelle specifiche nella cartella application/views
come template
, output
e database
. Per richiamarle si utilizzerà lo stessa identica modalità, con la differenza che la sottocartella viene "appesa" alla stringa del file:
<?php
class Welcome extends CI_Controller {
public function index() {
$this->load->view('template/doctype'); // application/views/template/doctype.p
$this->load->view('template/header');
$this->load->view('databse/main-data'); // application/views/database/main-data.php
$this->load->view('output/calendar'); // application/views/output/calendar.php
$this->load->view('template/footer');
}
}
?>