Indirizzamento in Yii2

Yii2 si basa sul pattern architetturale MVC (Model-View-Controller). Ciò significa che tutte le applicazioni sviluppate utilizzando Yii2 separeranno il modello dei dati che si occupa di gestire la comunicazione con il database, le viste che si occupano di formare la pagina richiesta che verrà restituita all’utente e i controller, che si occupano di effettuare le operazioni sui dati e utilizzare le viste per visualizzarli.

Se scriviamo nella barra degli indirizzi del browser un indirizzo di questo tipo:

http://localhost/basic/web/index.php?r=site/index

.../index.php?r=<controller>/<azione>

comunichiamo a Yii2 di voler accedere al controller SiteController (che si trova nella cartella controllers nel file siteController.php) e di voler compiere l’azione index (attraverso la funzione actionIndex()).

Avremo quindi una situazione di questo tipo:

<?php 

namespace app\controllers; 

use Yii; 
use yii\filters\AccessControl; 
use yii\web\Controller; 
use yii\filters\VerbFilter; 
use app\models\LoginForm; 
use app\models\ContactForm; 

class SiteController extends Controller 
   { 
    // ALTRO CODICE 

    public function actionIndex() 
       { 
        return $this->render('index');
       }

    //ALTRO CODICE
   }

Analizziamo il codice:

namespace app\controllers;

indica che il namespace utilizzato per lo script php SiteController.php è app\controllers (ovvero SiteController fa parte dei controllers).

use Yii; 
use yii\filters\AccessControl; 
use yii\web\Controller; 
use yii\filters\VerbFilter; 
use app\models\LoginForm; 
use app\models\ContactForm; 

Servono per indicare che, ad esempio, il nome della classe AccessControl che verrà utilizzato d’ora in avanti indica la classe che si trova nel percorso yii\filters\AccessControl e così via.

class SiteController extends Controller 

La classe SiteController estende la classe Controller (ovvero è un controller nel paradigma MVC). Il suo nome è la prima parte dell’indirizzo che abbiamo visto sopra (site) con la prima lettera maiuscola.

public function actionIndex() 
       { 
        return $this->render('index');
       }

L’azione index è definita come metodo con nome actionIndex. Yii2 usa il prefisso action per differenziare in una classe controller i metodi di tipo azione dagli altri metodi. Il nome che segue il prefisso action è esattamente il nome dell’ID dell’azione nell’indirizzo sopra (index) con la prima lettera maiuscola.

In questo caso, l’azione index si occupa di mostrare nel browser il contenuto della vista views/site/index.php.

 

Aggiungiamo un’azione

Se vogliamo aggiungere un’azione, non dobbiamo far altro che creare la funzione actionNomeazione(). Per aggiungere ad esempio l’azione hello, creiamo la funzione:

public function actionHello()
    {
    	return $this->render('hello');
    }

Questa funzione mostra nel browser il contenuto della vista views/hello.php. Dovremo dunque creare questa vista:

<h1>Benvenuto sul sito di Luca Di Mauro</h1>

Puntando con il browser all’indirizzo http://localhost/basic/web/index.php?r=site/hello, si otterrà quindi la seguente pagina:

Hello view

E’ molto importante sapere che il controllore può passare anche delle variabili alla vista che richiama. Per fare questo bisogna aggiungere la variabile nel controllore in questo modo:

public function actionHello()
    {
        $nome = 'Andrea';
    	return $this->render('hello', array('name' => $nome));
    }

Il valore della variabile verrà passato alla vista nella variabile $name, e potrà quindi essere richiamata in questo modo:

<h1>Benvenuto sul sito di Luca Di Mauro</h1>
<?= $name ?>

Commenti

commenti