Introduzione
Laravel fornisce diversi helper per generare gli URL dell’applicazione. Sono particolarmente utili per costruire link nei template e nelle risposte API, o per generare risposte di redirect verso un altro punto dell’applicazione.Uso di base
Generazione di un URL
Con l’helperurl puoi generare un URL qualsiasi.
L’URL generato usa automaticamente schema (HTTP o HTTPS) e host della richiesta corrente in elaborazione.
query.
Ottenere l’URL corrente
Se non passi un path all’helperurl, viene restituita un’istanza di Illuminate\Routing\UrlGenerator che ti permette di accedere alle informazioni sull’URL corrente.
URL.
Ottenere l’URL precedente
A volte vuoi conoscere l’URL visitato appena prima. Puoi recuperarlo con i metodiprevious e previousPath dell’helper url.
URL delle route con nome
L’helperroute può essere usato per generare URL verso route con nome.
Con le route con nome, la generazione degli URL non dipende dall’URL effettivo definito nella route.
Se l’URL della route cambia, non devi modificare le chiamate a route.
Modelli Eloquent
Spesso userai la route key (di norma la chiave primaria) dei modelli Eloquent per generare gli URL. Per farlo puoi passare direttamente il modello come valore del parametro: l’helperroute estrae automaticamente la route key.
URL firmati
Laravel semplifica la creazione di URL “firmati” verso route con nome. Alle query string di questi URL viene aggiunto un hash “firmato” che Laravel usa per verificare che l’URL non sia stato manomesso dopo la creazione. Gli URL firmati sono particolarmente utili per route pubbliche che devono comunque essere protette dalla manipolazione. Ad esempio, puoi usare URL firmati per implementare un link pubblico di “disiscrizione” inviato per email ai clienti. Con il metodosignedRoute della facade URL crei un URL firmato.
absolute in signedRoute puoi escludere il dominio dall’hash della firma.
temporarySignedRoute.
Nella verifica di un URL firmato temporaneo, Laravel controlla che il timestamp di scadenza codificato nell’URL non sia stato superato.
Flusso di verifica di un URL firmato
Verifica delle richieste alle route firmate
Per verificare che la richiesta in arrivo abbia una firma valida chiama il metodohasValidSignature dell’istanza Illuminate\Http\Request.
hasValidSignatureWhileIgnoring.
signed (Illuminate\Routing\Middleware\ValidateSignature).
Se la richiesta non ha una firma valida, il middleware restituisce automaticamente una risposta HTTP 403.
relative al middleware.
Risposta agli URL firmati non validi
Accedendo a un URL firmato scaduto viene mostrata la pagina di errore generica con status HTTP403.
Puoi personalizzare questo comportamento definendo una closure di rendering personalizzata per l’eccezione InvalidSignatureException in bootstrap/app.php.
URL delle action dei controller
La funzioneaction genera l’URL per l’action del controller indicato.
Oggetto URI fluido
La classe URI di Laravel offre un’interfaccia fluida per creare e manipolare URI tramite oggetti.Parametri URL predefiniti
A volte vuoi impostare valori predefiniti per certi parametri URL a livello di richiesta. Ad esempio, molte route hanno un parametro{locale} definito.
locale ogni volta che chiami route è scomodo.
Usa il metodo URL::defaults per definire un valore predefinito per questo parametro che venga sempre applicato durante la richiesta corrente.
Chiamandolo da un route middleware puoi accedere alla richiesta corrente.
locale impostato, non è più necessario passarlo quando generi URL con l’helper route.
L’impostazione dei valori predefiniti degli URL può interferire con l’implicit model binding di Laravel.
Fai in modo che il middleware che imposta i valori predefiniti venga eseguito prima del middleware
SubstituteBindings di Laravel, tramite l’ordinamento dei middleware.
Puoi configurarlo in bootstrap/app.php usando il metodo priority.