Inleiding
Laravel biedt verschillende helpers om URL’s voor je applicatie te genereren. Deze zijn vooral handig bij het bouwen van links in templates of API-responses, of bij het genereren van redirect-responses naar een andere plek in je applicatie.Basisgebruik
URL’s genereren
Met deurl helper kun je willekeurige URL’s genereren.
De gegenereerde URL gebruikt automatisch het schema (HTTP of HTTPS) en de host van het huidige request dat de applicatie verwerkt.
query methode om een URL met querystring-parameters te genereren.
De huidige URL ophalen
Als je geen pad opgeeft aan deurl helper, krijg je een Illuminate\Routing\UrlGenerator instantie terug waarmee je informatie over de huidige URL kunt opvragen.
URL facade.
De vorige URL ophalen
Soms wil je weten welke URL de gebruiker hiervoor heeft bezocht. Dat kan met deprevious en previousPath methoden van de url helper.
URL’s voor named routes
Deroute helper gebruik je om URL’s naar named routes te genereren.
Met named routes kun je URL’s genereren zonder afhankelijk te zijn van de daadwerkelijke URL die in de route is gedefinieerd.
Verandert de URL van de route, dan hoef je de aanroepen van de route functie dus niet aan te passen.
Eloquent-modellen
Vaak genereer je URL’s met de route key (meestal de primaire sleutel) van een Eloquent-model. Daarvoor kun je het Eloquent-model als parameterwaarde doorgeven. Deroute helper haalt de route key van het model automatisch op.
Signed URL’s
Met Laravel kun je eenvoudig “signed” URL’s naar named routes maken. Deze URL’s krijgen een “signature”-hash in de querystring, waarmee Laravel kan verifiëren dat de URL na het aanmaken niet is gewijzigd. Signed URL’s zijn vooral handig voor routes die publiek toegankelijk zijn, maar beschermd moeten worden tegen URL-manipulatie. Je kunt signed URL’s bijvoorbeeld gebruiken om een publieke “uitschrijven”-link te implementeren die je per e-mail naar klanten stuurt. Maak een signed URL met designedRoute methode van de URL facade.
absolute argument mee te geven aan de signedRoute methode kun je het domein uitsluiten van de signature-hash.
temporarySignedRoute methode om een tijdelijke signed URL te genereren die na de opgegeven tijd verloopt.
Bij het valideren van een tijdelijke signed URL controleert Laravel of de in de URL gecodeerde vervaltijd nog niet is verstreken.
Validatieflow van signed URL’s
Signed route-requests valideren
Om te controleren of een binnenkomend request een geldige signature heeft, roep je dehasValidSignature methode aan op de Illuminate\Http\Request instantie.
hasValidSignatureWhileIgnoring methode.
signed (Illuminate\Routing\Middleware\ValidateSignature) middleware aan de route toewijzen.
Heeft het binnenkomende request geen geldige signature, dan geeft de middleware automatisch een 403 HTTP-response terug.
relative argument mee aan de middleware.
Reageren op ongeldige signed routes
Wie een verlopen signed URL bezoekt, krijgt een generieke foutpagina met HTTP-statuscode403 te zien.
Je kunt dit gedrag aanpassen door in het bestand bootstrap/app.php van je applicatie een eigen “render”-closure te definiëren voor de InvalidSignatureException exception.
URL’s voor controlleracties
Deaction functie genereert een URL voor de opgegeven controlleractie.
Fluent URI-objecten
De URI-klasse van Laravel biedt een handige fluent interface om URI’s via objecten te maken en te bewerken.Standaardwaarden voor URL-parameters
Soms wil je voor een bepaalde URL-parameter een standaardwaarde instellen die voor het hele request geldt. Stel bijvoorbeeld dat veel van je routes een{locale} parameter hebben.
route helper locale door te geven.
Met de URL::defaults methode kun je een standaardwaarde voor deze parameter definiëren die tijdens het huidige request altijd wordt toegepast.
Roep deze methode aan vanuit een route-middleware, zodat je toegang hebt tot het huidige request.
locale parameter is ingesteld, hoef je die waarde niet meer door te geven bij het genereren van URL’s met de route helper.
Het instellen van standaardwaarden voor URL’s kan de verwerking van Laravels impliciete model binding verstoren.
Stel daarom de middleware-prioriteit zo in dat de middleware die de URL-standaardwaarden instelt vóór Laravels eigen
SubstituteBindings middleware wordt uitgevoerd.
Dat kan met de priority middlewaremethode in het bestand bootstrap/app.php van je applicatie.