Passaggio dati da più modelli
Vediamo come passare diversi tipi di dati alla presentazione. Prenderemo vari tipi di dato da modelli diversi, ognuno dal suo modello e nel controllo li caricheremo tutti nella stessa struttura da passare alla vista. Nella vista poi recuperemo tutti i dati caricati.Creiamo un nuovo progetto , che nel mio caso punterà a CI7 :
root: http://localhost:8080/CI7/index.php .
Creiamo un controllo, una vista e tre modelli :
controllo.php in application\controllers
modelloArray.php in application\models
modelloStringa.php in application\models
modelloNumero.php in application\models
vista.php in application\views
Vediamo il codice e dopo commenteremo tutte le classi :
controllo.php :
<?php
class controllo extends CI_Controller
{
public function index()
{
$this->load->model("modelloArray");
$this->load->model("modelloStringa");
$this->load->model("modelloNumero");
$listaVariabile =
$this->modelloArray->get_lista();
$stringaVariabile =
$this->modelloStringa->get_Stringa();
$NumeroVariabile
= $this->modelloNumero->get_Numero();
$data["array"] = $listaVariabile;
$data["stringa"] =
$stringaVariabile;
$data["numero"] = $NumeroVariabile;
$this->load->view('vista',$data);
}
}
modelloArray.php :
<?php
class modelloArray extends CI_Model{
function get_lista(){
$list
= array('Luca', 'Giovanni', 'Matteo', 'Paolo', 'Antonio','Marco','Giuseppe');
return $list;
}
}?>
modelloStringa.php :
<?php
class modelloStringa extends CI_Model{
function get_Stringa(){
$stringa = "Iesu";
return $stringa;
}
}?>
modelloNumero.php :
<?php
class modelloNumero extends CI_Model{
function get_Numero(){
$numero = 33;
return $numero;
}
}?>
vista.php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"
/>
<title>Apostolorum</title>
</head>
<body>
<h1>Et dixerunt apostoli ... </h1>
<?php
echo $array[0], '<br>';
echo $array[1], '<br>';
echo $array[2], '<br>';
?>
<?php
echo 'multis aliis ... ';
?>
<h1>Initium evangelii</h1>
<?php
echo
$stringa
, '<br>';
?>
<?php
echo
'Christi
Filii Dei ... ';
?>
<h1>Anno Domini</h1>
<?php
echo
$numero
, '<br>';
?>
</body>
</html>
I modelli sono semplici recuperatori di dati. Tutti hanno dentro una sola funzione che deve restituire qualcosa. Si capisce bene che come venga costruito il risultato non importa per quello che c'è dopo. Se invece che un semplice assegnamento ci fosse una complicata logica di recupero dati da un database non cambia nulla per chi utilizza i metodi get_ . Abbiamo quella che in informatica si chiama trasparenza, in questo caso del modello .
Il controllo quindi recupera i dati semplicemente invocando i metodi get_ dai modelli.
$this->load->model("modelloArray");
$this->load->model("modelloStringa");
$this->load->model("modelloNumero");
Per poterlo fare prima carica i modelli.
$listaVariabile = $this->modelloArray->get_lista();
$stringaVariabile = $this->modelloStringa->get_Stringa();
$NumeroVariabile =
$this->modelloNumero->get_Numero();
Infine il controllo inserisce i dati così recuperati in una struttura unica ,$data ,da cui la vista potrà prendere i dati per farne una presentazione.
$data["array"] = $listaVariabile;
$data["stringa"] =$stringaVariabile;
$data["numero"] = $NumeroVariabile;
$this->load->view('vista',$data);
Quindi per caricare la struttura $data basta mettere un'etichetta ,array","stringa"] , "numero"] e poi la variabile . Fatto questo si passa la struttura alla vista direttamente nel caricamento della vista , come parametro: load->view('vista',$data).
A questo punto la vista avrà disponibile i dati semplicemente come variabili : $array, $stringa, $numero. Quindi chi progetto la vista ha bisogno di sapere solo cosa gli arriva senza bisogno di altro, in questo modo anche la vista ha la trasparenza .
Il risultato finale sarà visibile all'indirizzo : http://localhost:8080/CI7/index.php/controllo


Nessun commento:
Posta un commento