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.

Pubblicitร 

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