Guida all’uso dei controller in Laravel 4

Continua la nostra guida a Laravel 4 con una panoramica all’uso dei controller utili per gestire le nostre applicazioni.

Sommario

Che cosa sono  i Controller in Laravel4

Nella precedente lezione abbiamo visto come strutturare la nostra applicazione  a seconda del link che viene richiesto dal visitatore. Lo scopo finale di una routes in una programmazione strutturata è quello di passare informazioni a qualcosa di più “complesso” capace di elaborare / filtrare eventuali informazioni per poi visualizzarle all’utente finale. Questo strumento “complesso” prende il nome di Controller.

Pensiamo ad esempio ad un blog. Di base avremo bisogno di una lista di articoli da cui scegliere e di una  vista singola dove l’articolo viene mostrato in modo esteso con foto/testo etc. Come avrete imparato dal precedente capitolo avremo bisogno quindi di due routes: una per la categoria e una per la single view. Ogni routes dovrà puntare a una funzione differente del controller. Ecco un esempio chiarificatore per la visualizzazione di una categoria del blog:

//Routes presente nel file routes.php

Route::get('blog', 'BlogController@showCat');
// app/controllers/BlogController.php

class BlogController extends BaseController
{
    public function showCat()
    {
        return View::make('blog/cat');
    }//Cat

}//Class

Come avete visto in questo semplice esempio la routes ad una richiesta HTTP di questo tipo:

http://tuosito.it/blog

Elabora la funzione showCat presente all’interno di BlogController. (BlogController@showCat).

Nel nostro caso la funzione showCat consiste nel mostrare una banale vista (ovvero la pagina del blog), ma il vero potenziale dei controller sta nell’elaborazione e gestione del flusso di dati PRIMA di inviarli alla rispettiva view. Con un controller di questo tipo infatti, di fatto non viene inviato nulla alla vista “Blog/Cat” che risulterà pertanto ancora vuota senza nulla di dinamico da visualizzare.

Passare variabili ed elaborare il flusso di dati

Come abbiamo detto vogliamo finalmente visualizzare qualcosa (dinamico) nella categoria. Come fare? Per prima cosa dobbiamo modificare la routes passando l’id della categoria da visualizzare in questo modo:

Route::get('blog/{permalink_cat}/{id_cat}', 'BlogController@showCat');

Per ragioni SEO (e non solo) è buona abitudine passare anche il permalink della categoria.  A questo punto, quando l’utente farà una richiesta di questo genere:

http://tuosito.it/blog/web-design/4
//Oppure
http://tuosito.it/blog/sviluppo/5
//etc etc

Verrà elaborato il nostro controller a cui però saranno fornite le seguenti variabili:

  • $permalink_cat
  • $id_cat

Cosa ce ne facciamo nello specifico? Bhè useremo l’id per “estrarre” dal database tutti gli articoli presenti in quella categoria e passeremo poi il tutto alla nostra vista. Per estrapolare i dati dal database ci basterà usare questo codice all’interno del nostro controller:

class BlogController extends BaseController {

    public function showCat($permalink_cat,$id_cat)
    {
        //Trovo tutti gli articoli della cat attraverso l'ID
        $articoli = Articoli::find($id_cat);

        //Visualizzo la pagina della categoria passando l'array articoli 
        //contenente il loop di tutti gli articoli in cat
        return View::make('blog/cat', array('articoli ' => $articoli ));

    }//Function

}//Class

Nota importante: per poter usare la funzionalità FIND($id) dovete aver impostato il relativo Model all’interno della cartella “models”. Nel nostro caso specifico andate a creare un file Article.php all’interno della cartella “models” e metteteci dentro questo codice per abilitare le funzionalità offerte da Eloquent ORM:

<?php 
class Article extends Eloquent {
    protected $table = 'articles';
    public function author()
    {
        return $this->belongsTo('User');
    }
}

Nota importante #2: Le variabili che definite nella funzione (ShowCat nel nostro caso) devono avere lo stesso ordine di quelle che avete impostato all’interno della routes. Se avessimo scritto in questo modo ad esempio:

public function showCat($id_cat,$permalink_cat){

avremmo avuto dei problemi, quindi fate attenzione!

Codice completo: Gestione vista blog

//File Routes.php
Route::get('blog/{permalink_cat}/{id_cat}','BlogController@showCat');

//File models/Article.php
class Article extends Eloquent {
    protected $table = 'articles';
    public function author()
    {
        return $this->belongsTo('User');
    }//Function
}//Class

//File controller/BlogController.php
class BlogController extends BaseController {

    public function showCat($permalink_cat,$id_cat)
    {
        //Trovo tutti gli articoli della cat attraverso l'ID
        $articoli = Articoli::find($id_cat);

        //Visualizzo la pagina della categoria passando l'array articoli 
        //contenente il loop di tutti gli articoli in cat
        return View::make('blog/cat', array('articoli ' => $articoli ));

    }//Function

}//Class

Conclusioni & Download

Capitolo 1: Guida Laravel 4 - Introduzione ai framework, Installazione e configurazione
Capitolo 2: Guida Laravel 4 - Introduzione alle routes per gestire il progetto
Capitolo 3: Guida Laravel 4 - Uso dei Controller
Donazione libera con importo minimo di 1€ - Riceverai una mail con un link dove scaricare lo zip, il link è attivo per 2 giorni dalla data di donazione.

 
 

Grazie al nostro ciclo di guide dedicate a Laravel alla fine di questa lezione dovreste avere imparato:

  • Che cos’è Laravel e perchè usarlo
  • Come installarlo in pochi semplici steps
  • Come gestire le routes (richieste) per i vostri progetti
  • Come elaborare le routes e gestire il flusso di dati (loop etc).

Nella prossima lezione andremo a vedere come strutturare le “viste” ovvero come visualizzare a schermo i dati recuperati ed elaborati dal controller.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

disabilitare-aggiornamenti-automatici-wordpress-3-7
Up Next:

Disabilitare aggiornamenti automatici in Wordpress 3.7

Disabilitare aggiornamenti automatici in Wordpress 3.7