laravel logo

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

Nell0esempio 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.

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 ) {    
   per ( $i = 1 ; $i < = 10 ; $i + + ) {   
       echo "$i * $numero = " . $i * $numero . "<br>" ; 
   }   
} ) - > dove ( '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');

Ercole Palmeri

Newsletter sull’Innovazione

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

Puoi cancellarti in ogni momento. Leggi la nostra Privacy Policy.

Newsletter dell’Innovazione

Non perdere le notizie più importanti sull’Innovazione. Iscriviti per riceverli via email.