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.

Articoli correlati
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

Funzioni statistiche di Excel per il calcolo delle medie: Tutorial con esempi, seconda parte

Excel fornisce un'ampia gamma di funzioni statistiche che eseguono calcoli dalla media, mediana e moda di base fino alla distribuzione…

2 Ottobre 2023

Funzioni statistiche di Excel: Tutorial con esempi, prima parte

Excel fornisce un'ampia gamma di funzioni statistiche che eseguono calcoli dalla media, mediana e moda di base fino alla distribuzione…

1 Ottobre 2023

Tabelle Pivot: cosa sono, come creare in Excel e Google. Tutorial con esempi

Le tabelle pivot costituiscono una tecnica di analisi dei fogli di calcolo. Consentono a un principiante assoluto con zero esperienza…

30 Settembre 2023

The Copyright Trouble

Quello che segue è il secondo ed ultimo articolo di questa newsletter dedicato al rapporto tra Privacy e Copyright da…

30 Settembre 2023

Innovazione per la mobilità elettrica e smart-grid: nuove batterie calcio-ione

Progetto ACTEA, ENEA e Sapienza Università di Roma metteranno a punto le nuove batterie calcio-ione. Le nuove batteria calcio-ione in alternativa a…

30 Settembre 2023

Punti salienti del convegno annuale AOFAS 2023 Ricerca e innovazione ortopedica

Oltre 900 chirurghi ortopedici del piede e della caviglia, operatori sanitari avanzati, specializzandi ortopedici e studenti di medicina hanno partecipato…

28 Settembre 2023

Boom della robotica: nel solo 2022 installati nel mondo 531.000 robot. Stima di crescita del 35% annuo da qui al 2027. IL RAPPORTO PROTOLABS

Secondo l’ultimo report Protolabs sulla robotica destinata alla produzione, quasi un terzo (32%) degli intervistati ritiene che nei prossimi anni…

28 Settembre 2023

CNH premiata agli Agritechnica Innovation Awards per la sua tecnologia in campo agricolo

CNH è fortemente impegnata nello sviluppo della propria tecnologia per rendere l’agricoltura più semplice, efficiente e sostenibile per i suoi…

27 Settembre 2023

NTT e Qualcomm scelgono di collaborare per spingere l’IA oltre i suoi limiti

La mossa strategica faciliterà uno sviluppo più veloce per l'adozione dell'ecosistema privato 5G per tutti i dispositivi digitali NTT svela…

27 Settembre 2023

Neuralink inizia il reclutamento per la prima sperimentazione clinica sull’uomo di un impianto cerebrale

Neuralink, la startup neurotecnologica di proprietà di Elon Musk, ha recentemente annunciato che inizierà a reclutare pazienti per il suo…

26 Settembre 2023