339 4296687 [email protected]

Laravel Tutorial: Le Routes in Laravel, ovvero come Laravel sceglie cosa mostrare quando visualizziamo una url

Nel precedente episodio, abbiamo messo online il nostro server di sviluppo locale e ci siamo fermati aprendo la home page del nostro “blog”. Ma cosa succede quando carichiamo la home page del nostro progetto Laravel? Cosa dice a Laravel quale pagina mostrarci?

La risposta è che laravel utilizza un sistema di routing per decidere cosa mostrare all’utente che visita una determinata pagina. Questo sistema utilizza diversi file .php al cui interno vengono definite le routes, ovvero le url della nostra app ed i rispettivi comportamenti da adottare. Un esempio di definizione di una route è il seguente:

Route::get('/', function () {
    return view('welcome');
});

Un’installazione pulita di Laravel contiene al suo interno già un file che possiamo utilizzare per definire le routes della nostra app, ed è il file web.php che troviamo nella cartella /routes/ del nostro progetto. Ecco cosa troviamo al suo interno dentro un’installazione nuova di Laravel:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Come puoi vedere, la sintassi per definire una route è molto semplice. Si definisce per prima cosa il metodo con cui chiamiamo una certa url (es. get o post) e successivamente si specifica una funzione da eseguire al momento della chiamata a quella url. Il valore ritornato dalla funzione è ciò che il tuo utente visualizzerà a schermo. Nella route che abbiamo definito sopra, restituiamo la view (una pagina html) welcome, che Laravel va a cercare nella cartella resources/view del nostro progetto. Volendo, è possibile anche restituire una stringa testuale, oppure un array json (molto utile se stiamo implementando delle API).

Per adesso è presto per parlare di controller, ma per completezza, ti segnalo che anziché definire esplicitamente la funzione da eseguire, possiamo anche invocarne una da un controller. La sintassi sarebbe la seguente da sostituire come secondo parametro invece della funzione: ‘[email protected]’.

Su questo aspetto torneremo tuttavia più avanti.

View in Laravel. Cosa sono e dove sono salvate

Abbiamo visto che nell’esempio di codice riportato sopra, restituiamo una view al nostro utente. Ma cos’è una view?

Una view altro non è che un normale file php contenente al suo interno anche del codice html. View sta appunto per vista, ovvero ciò che mostriamo al nostro utente finale.

Per fugare ogni tuo dubbio, ecco un esempio di una view semplicissima:

<html>
<head>
    <title>La mia prima view</title>
</head>
<body>
    <p>ciao, sono una view!</p>
</body></html>

 

Laravel salva le sue view all’interno della cartella /resources/view della nostra applicazione ed ogni view è salvata con estensione .blade.php.

Parleremo meglio di blade nel prossimo episodio. Per adesso, sappi soltanto che si tratta di un preprocessore che ci consentirà di scrivere codice php più leggibile e pulito dentro le nostre view

Quando vogliamo restituire una view da un metodo, possiamo farlo con il comando return view(‘nome_view_senza_estensione’). Laravel infatti è molto intelligente sotto questo aspetto e saprà trovare in autonomia la view da restituire aggiungendo da solo l’estensione .blade.php

Definiamo qualche route per la nostra applicazione

Adesso che abbiamo chiarito il concetto di view, possiamo cominciare a fare qualche esperimento definendo qualche route per il blog.

Provaci anche tu, crea un paio di nuove route per le pagine che vorrai includere nel tuo blog. Una pagina Contatti ed una pagina About penso che siano d’obbligo!

Ecco come dovrebbe essere il risultato finale nel file web.php:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    //gli ultimi articoli
    return view('welcome');
});

Route::get('/about', function () {
    //pagina contatti
    return view('about');
})->name('about');

Route::get('/contacts', function () {
    return view('contacts');
});

Creiamo le view per le routes che abbiamo definito

A questo punto, non ci reata altro da fare che creare le view per le routes che abbiamo definito nel paragrafo sopra.

Per farlo, non devi fare altro che creare due file nella cartella /resources/view, about.blade.php e contacts.blade.php, e scrivere al loro interno del semplice codice html. Per adesso, facciamoci bastare qualcosa di ridotto all’osso, come questo:

<html>
<head>
<title>About Page</title>
<body>
<p>Questa è la pagina about</p>
</body>
</head>
<html>
<head>
<title>Contacts Page</title>
<body>
<p>Questa è la pagina Contacts</p>
</body>
</head>

Adesso, prova a visitare i link 127.0.0.1:8000/contacts e 127.0.0.1:8000/about; dovresti vedere le tue pagine correttamente.

Nel prossimo articolo

Adesso che abbiamo visto come definire le routes della nostra app, è arrivato il momento di fare il passo successivo, ovvero sfruttare Blade per rendere più facile ed efficiente la gestione delle nostre view.

Nel prossimo articolo implementeremo una grafica più accattivante per il blog e vedremo come sfruttare l’ereditarietà per ridurre il codice html da scrivere e di conseguenza le ridondanze all’interno delle view.

Share This