Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La gestione degli utenti - II

Introduzione all'autenticazione e al controllo degli accessi degli utenti. Parte seconda: la creazione del model, controller e view
Introduzione all'autenticazione e al controllo degli accessi degli utenti. Parte seconda: la creazione del model, controller e view
Link copiato negli appunti

Il model e il controller

Come prima cosa creiamo un nuovo metodo nel model per visualizzare la lista di tutti gli utenti registrati. Nel file application/models/Utente.php aggiungiamo dunque il seguente codice:

public static function getUtenti() {
		$select = $this->select();
		$select->from($this,array('username','lastname', 'firstname'))
			->order('lastname ASC');
		return $this->fetchAll($select);
}

In questo metodo non facciamo altro che creare una SELECT per interrogare la tabella "utenti": la query restituisce tutti i record della tabella (campi username, lastname e firstname) ordinati per cognome in maniera ascendente. Impostato il modello, passiamo alla creazione del controller che ci permetterà di gestire le utenze:

zf create controller utente

ovvero del file application/controllers/UtenteController.php generato dal lancio del comando indicato poc'anzi.

Il passo successivo è implementare nel controller la funzione che gestisce la action list. Anche questa volta utilizziamo Zend_Tool, e da linea di comando, sempre posizionandoci nella cartella del progetto, lanciamo la seguente riga:

zf create action list utente

Apriamo il file UtenteController.php e posizioniamoci all'interno del metodo listAction generato da Zend_Tool. Bastano queste poche righe di codice per recuperare la lista degli utente ed assegnarla alla vista:

public function listAction () {
	$ utentiCorrenti = Model_Utente::getUtenti();
	if ($utentiCorrenti->count() > 0) {
	  $this->view->utenti = $utentiCorrenti;
	} else {
	  $this->view->utenti = null;
	}
}

Ormai dovremmo essere in grado di capire questo metodo: la prima cosa che facciamo è di richiamare sull'oggetto model il metodo getUtenti() analizzato precedentemente e di salvare il risultato nella variabile $utentiCorrenti. A questo punto eseguiamo un veloce controllo per verificare che effettivamente ci siano utenti nel database. In questo caso assegnamo alla view la variabile utenti che conterrà un oggetto che rappresenta l'elenco di tutti gli utenti registrati nella nostra base di dati, in caso contrario assegniamo null a tale variabile.

La view

Passiamo ad occuparci della view. Per visualizzare la lista degli utenti dobbiamo creare il file application/views/scripts/utente/list.phtml che conterrà il codice HTML della vista:

<h3>Lista degli utenti</h3>
<?php
	//questa è proprio la variabile che abbiamo impostato nel controller
	if( $this->utenti != null ) {
		echo “<ul class='data'>”
		foreach ( $this->utenti as $utente ) {
		    echo “<li>” . $utente->firstname;
		    echo  $utente->lastname . “ - ” . $utente->username;
		    echo “</li>”;
		}
		echo “</ul'>”;
?>
<?php } else { ?>
		<p>La lista degli utenti attualmente risulta vuota.</p>
<?php } ?>

La vista visualizzerà un elenco puntato in cui ogni elemento conterrà il nome, il cognome e l'username di ogni utente presente nel nostro database. Chiaramente siamo liberi di impostare il layout come meglio crediamo, ad esempio inserendo codice javascript per rendere più accattivante la pagina.

Riassumendo: abbiamo creato il controller UtenteController, il model Utente e la vista per la action list. Notiamo che questo file è stato inserito all'interno della directory delle viste, precisamente nella directory utente: è qui infatti che ZF andrà a cercare il file per visualizzare la action list del controller utente. È quindi di vitale importanza rispettare il naming imposto dal framework.

Anche se è solo un esempio introduttivo possiamo comunque iniziare ad intravedere la comodità e la ben organizzata struttura di cui dispone ZF: lo sviluppatore "frontend", quello cioè che si occupa dell'interfaccia utente, è libero di lavorare tranquillamente indipendentemente da ciò che succede nel controller e nel model, perché tutto ciò di cui ha bisogno è sapere che nella view è a disposizione l'elenco di tutti gli utenti grazie al riferimento $this->utenti . A loro volta gli sviluppatori che si occupa della logica di business (controller e model) sono liberi di riorganizzare il backend senza per forza interrompere il lavoro di chi si sta occupando dell'interfaccia utente.

Ti consigliamo anche