Articoli

Laravel: introduzione al routing di laravel

Il routing in Laravel consente agli utenti di instradare tutte le richieste dell’applicazione al controller appropriato. La maggior parte dei percorsi primari in Laravel riconosce e accetta un Uniform Asset Identifier insieme a una chiusura, fornendo un modo semplice ed espressivo di instradamento.

Cos’è un percorso (route) ?

Il percorso è un modo per creare un URL di richiesta per la tua applicazione. Questi URL non devono essere associati a file specifici su un sito Web e sono leggibili e ottimizzati per la SEO .

In Laravel, i percorsi vengono creati all’interno della cartella delle routes. Vengono creati nel file web.php per i siti web, e all’interno di api.php per le API.

Queste route vengono assegnate al gruppo middleware di rete, evidenziando lo stato della sessione e la sicurezza CSRF. Le rotte in route/api.php sono senza stato e vengono assegnate al gruppo middleware API.
L’installazione predefinita di Laravel viene fornita con due percorsi, uno per il Web e l’altro per l’API. Ecco come appare il percorso per il web in web.php:

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

Cos’è un percorso (route) in Laravel ?

Tutti i percorsi di Laravel sono definiti nei file dei percorsi che si trovano all’interno della directory routes. L’applicazione di gestione delle rotte, definita nel file App\Providers\RouteServiceProvider, si occupa di mettere in fila automaticamente questi file. Il file route/web.php definisce i percorsi per la tua interfaccia web.

È possibile definire un percorso per questa azione del controller nel modo seguente:

Route::get(‘user/{id}’, ‘UserController@show’);

Route::resource: il metodo Route::resource produce tutti i percorsi di base richiesti per un’applicazione e viene gestito tramite la classe controller.

Quando una richiesta corrisponde all’URI di route specificato, viene richiamato il metodo show definito nel controller App\Http\ControllersUserController, passando i parametri di route al metodo.

Per le risorse, devi fare due cose sull’applicazione Laravel. In primo luogo, è necessario creare un percorso di risorse su Laravel che fornisca percorsi di inserimento, aggiornamento, visualizzazione ed eliminazione. In secondo luogo, creare un controller di risorse che fornisca un metodo per l’inserimento, l’aggiornamento, la visualizzazione e l’eliminazione.

L’installazione predefinita di Laravel viene fornita con due percorsi: uno per il Web e l’altro per l’API. Ecco come appare la route per web in web.php:

Route::get(‘/’, function () {

return view(‘welcome’);

});

Laravel Middleware funge da ponte tra la richiesta e la reazione. Può essere una sorta di componente filtrante.

Laravel lavora con un middleware che ha il compito di confermare se l’applicazione del client è verificata o meno. Nel caso in cui il client sia confermato, allora il routing reindirizza alla home page o a una pagina di accesso.

I metodi per le route

Il codice precedente definisce un percorso per la home page. Ogni volta che questo percorso riceve una richiesta get per /, restituirà la view welcome

Tutti i percorsi di Laravel sono definiti nei tuoi file di routing, che si trovano all’interno della directory dei routes. Di conseguenza, l'AppProvidersRouteServiceProvider dell’applicazione mette in fila questi record. Il file route/web.php contiene le rotte che sono gestite per la tua interfaccia web.

La struttura dei percorsi è molto semplice. Apri il file appropriato (`web.phpo `api.php) e inizia la riga di codice con `Route:: `, seguito dalla richiesta che vuoi assegnare a quella rotta specifica e quindi specifica la funzione che sarà eseguiti a seguito della richiesta.

Laravel offre i seguenti metodi di percorso:

  • get
  • post
  • put
  • delete
  • patch
  • options

I percorsi sono definiti in Laravel all’interno della classe Route con HTTP, il percorso a cui rispondere e la chiusura, oppure il controller.

Come creare percorsi in Laravel

Vediamo come puoi creare i tuoi percorsi in Laravel.

Un percorso GET di base

Ora creerò un percorso di base che stamperà la tabellina del 2.

Route::get('/table', function () {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * 2 = ". $i*2 ."<br>";
   }   
});

Nel codice sopra, ho creato un percorso di richiesta GET per l’URL /table, che stamperà la tabellina del 2 sullo schermo.

Vediamo ora lo stesso codice, parametrizzando il numero per il quale si vuole la tabellina:

Route::get('/table/{number}', function ($number) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

Nel codice il ‘number‘ tra le parentesi graffe rappresenta il parametro, cioè il numero per il quale verrà calcolata la tabellina. Ogni volta che viene specificato un URL del tipo /table/n, allora verrà stampata la tabellina del numero n.

Esiste anche il modo per combinare entrambe le funzionalità in un unico percorso. Laravel offre la funzionalità dei parametri opzionali che ti consente di aggiungere parametri opzionali utilizzando il punto interrogativo ‘?’ dopo il parametro facoltativo e il valore predefinito. Vediamo l’esempio:

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

Nel codice sopra abbiamo creato il nostro parametro di route, rendendo il numero facoltativo, quindi se un utente instrada `/table` allora genererà la tabella di 2 per impostazione predefinita e se un utente instrada a `/table/{number}` quindi la tabellina del numero 'number' verrà prodotto.

Espressioni regolari come vincoli per i parametri di route

Nell’esempio precedente abbiamo creato un percorso per la generazione della tabellina, ma come possiamo assicurarci che il parametro del percorso sia effettivamente un numero, per evitare errori durante la generazione della tabellina ?

In Laravel, puoi definire un vincolo al parametro della rotta usando il metodo `where` sull’istanza della rotta. Il metodo `where` accetta il nome del parametro e una espressione regolare per quel parametro.

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

Vediamo ora un esempio di vincolo per il nostro parametro `{numero}` per assicurarci che solo un numero venga passato alla funzione.

Route:: get ( '/table/{numero?}' , funzione ( $numero = 2 ) {    
   for( $i = 1 ; $i < = 10 ; $i + + ) {   
       echo "$i * $numero = " . $i * $numero . "<br>" ; 
   }   
} )->where( 'numero' , '[0-9]+' ) ;

Nel codice sopra, abbiamo usato un’espressione regolare per il numero del percorso. Ora, se un utente prova a eseguire il routing a /table/no , verrà visualizzata un’eccezione NotFoundHttpException .

Laravel Routing con funzione di controllo

In Laravel, puoi definire un metodo Controller per un percorso. Un metodo controller esegue tutte le azioni definite ogni volta che un utente accede alla route.
Con il seguente codice stiamo assegnando il metodo controller 'functionname' a una route:

Route:: get ( '/home' , 'YourController@functionname' ) ;

Il codice inizia con `Route::` e quindi definisce il metodo di richiesta per il percorso. Successivamente, definisci il tuo percorso e il controller insieme al metodo aggiungendo il simbolo @ prima del nome del metodo.

Assegnare un nome al percorso

In Laravel, puoi definire un nome per il tuo percorso. Questo nome è spesso molto utile. Ad esempio, se desideri reindirizzare un utente da un percorso a un altro, non è necessario definire l’URL di reindirizzamento completo. Puoi semplicemente dare il suo nome. Puoi definire il nome della rotta usando il metodo `name` nell’istanza della rotta.

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
})->where('number', '[0-9]+')->name(‘table’);

Ora, potrei rigenerare l’URL per questo percorso, attraverso il seguente codice:

$url = route('table');

Allo stesso modo, per il reindirizzamento a questo URL, la sintassi corretta sarebbe:

return redirect()->route('table');

Route Groups

I Route Groups, letteralmente gruppi di percorsi, è una funzionalità essenziale in Laravel, che consente di raggruppare i percorsi. I gruppi di percorsi sono utili quando si desidera applicare gli attributi a tutti i percorsi ragruppati. Se utilizzi i gruppi di percorsi, non devi applicare gli attributi individualmente a ciascun percorso; questo evita la duplicazione. Ti consente di condividere attributi come middleware o namespaces, senza definire questi attributi su ogni singolo percorso. Questi attributi condivisi possono essere passati in un formato array come primo parametro al metodo Route::group.

Sintassi di un Route Group

Route::group([], callback);  

dove [ ]: è un array passato al metodo group come primo parametro.

Esempio di Route Group nel web.php

Route::group([], function()  
{  
   Route::get('/first' , function()  
   {  
      echo "first way route" ;   
   });  
   Route::get('/second' , function()  
   {  
      echo "second way route" ;   
   });  
   Route::get('/third' , function()  
   {  
      echo "third way route" ;   
   });  
});  

Nel codice, definiamo il metodo group(), che contiene i due parametri, cioè array e closure. All’interno della closure, possiamo definire quanti route vogliamo. Nel codice sopra, abbiamo definito tre route.

Se via browser accediamo all’URL localhost/myproject/first allora interviene il primo route scrivendo nel browser first way route.

Con l’URL localhost/myproject/second allora interviene il secondo route scrivendo nel browser second way route.

Mentre con l’URL localhost/myproject/third allora interviene il terzo route scrivendo nel browser third way route.

Prefissi di Route Groups

I prefissi di route vengono utilizzati quando vogliamo fornire una struttura URL comune a più route.

Possiamo specificare il prefisso per tutti i percorsi definiti all’interno del gruppo utilizzando l’opzione matrice prefisso nel Route Groups.

Esempio di web.php

Route::group(['prefix' => 'movie'], function()  
{  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
});  

Il codice contiene tre percorsi a cui è possibile accedere dai seguenti URL:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

Middleware

Possiamo anche assegnare il middleware a tutti i percorsi all’interno di un gruppo. Il middleware deve essere definito prima di creare il gruppo. Per vedere come fare, leggi il nostro articolo Laravel middleware come funziona.

Esempio:

Route::middleware(['age'])->group( function()  
{  
  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
  
});  

Prefissi del nome del percorso

Il metodo name viene utilizzato per prefissare ogni nome di route con una stringa specificata. Nel metodo name, dobbiamo specificare la stringa con un carattere finale nel prefisso.

Esempio web.php

Route::name('movie.')->group(function()  
{  
   Route::get('users', function()  
   {  
      return "movie.films";  
   })->name('films');  
});  

Ercole Palmeri

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

Articoli recenti

Veeam presenta il supporto più completo per il ransomware, dalla protezione alla risposta e al ripristino

Coveware by Veeam continuerà a fornire servizi di risposta agli incidenti di cyber-estorsione. Coveware offrirà funzionalità di forensics e remediation…

23 Aprile 2024

Rivoluzione Verde e Digitale: Come la Manutenzione Predittiva sta Trasformando il Settore Oil & Gas

La manutenzione predittiva sta rivoluzionando il settore dell'oil & gas, con un approccio innovativo e proattivo alla gestione degli impianti.…

22 Aprile 2024

L’autorità antitrust del Regno Unito lancia l’allarme BigTech su GenAI

La CMA del Regno Unito ha lanciato un avvertimento circa il comportamento delle Big Tech sul mercato dell’intelligenza artificiale. La…

18 Aprile 2024

Casa Green: rivoluzione energetica per un futuro sostenibile in Italia

Il Decreto "Case Green", formulato dall'Unione Europea per potenziare l'efficienza energetica degli edifici, ha concluso il suo iter legislativo con…

18 Aprile 2024