Il manuale di CodeIgniter definisce il controller così:
A Controller is simply a class file that is named in a way that can be associated with a URI.
In realtà il controller nel paradigma MVC è quello che si occupa di gestire l’input e l’output dell’utente creando una sorta di “ponte” tra model e view. In effetti il controller in CodeIgniter è entrambe queste cose.
Immaginiamo di dover scrivere un’applicazione per la gesitione di un magazzino. Scriveremo allora una classe controller chiamata Magazzino simile a questa:
class Magazzino extends Controller {
function elenco() {
// elenca tutto il contenuto del magazzino
}
function scaffale($codice_scaffale) {
// elenca il contenuto di un determinato scaffale del magazzino
}
}
Salvando questa classe nella cartella system/application/controller/magazzino.php automaticamente CodeIgniter renderà disponibile l’output dei due metodi che abbiamo scritto rispettivamente agli indirizzi: misito.com/index.php/magazzino/elenco e miosito.com/index.php/magazzino/scaffale/a12.
In particolare nel secondo caso passerà alla funzione scaffale il codice scaffale ‘a12′.
Ovviamente si possono passare più parametri alle funzioni che ne hanno bisogno continuando ad aggiungerli separati da /. Si può anche migliorare la leggibilità degli indirizzi rimuovendo “index.php” con un htaccess simile a:
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
Ma non basta, perchè CodeIgniter ci permette anche di organizzare i controller in cartelle e sottocartelle o di definire nuove regole di “routing” aggiungendo regole al file system/application/config/routes.php.
Per queste ed altre funzioni avanzate, rimando alla guida ufficiale di CodeIgniter, in particolare alla pagina Controllers e URI Routing.
Alla prossima lezione, in cui parleremo del Model.






Un commento
Complimenti per la spiegazione e segnalazione…proverò questo CodeIgniter!
P.S. Complimenti per il sito…