back to top

CodeIgniter: le Views per la creazione di template

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.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.
Articolo precedente
Articolo successivo