Routes

Binnen Laravel kan je URLs leiden naar een bestand en specifieke code aanroepen. Dit doe je in het bestand routes/web.php. Zie afbeelding hieronder waar je het kan vinden.

Schermafbeelding 2022-11-13 om 14.31.51.png

De pagina die je als eerste ziet kan je vinden onder resources/views/welcome.blade.php. Dit bestand wordt opgebouwd doormiddel van de Blade Template engine.

In Laravel hoef je geen Blade te gebruiken, je kan ook zonder Blade dit gebruiken

Schermafbeelding 2022-11-13 om 14.32.05.png

Slugs (Wildcards) in Routes

Om een url naar een bestand te redirecten gaan we naar routes/web.php en voegen hier de volgende stukken code toe:

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

Met Laravel kan je nu achter de URL ‘posts’ plakken. Hij gaat alleen zoeken naar een template bestand in de map resources/views/. Dit bestand moet aangemaakt worden met de naam posts.blade.php of posts.php

In dit bestand kan je nu HTML typen die zichtbaar wordt als je naar http://127.0.0.1:8000/posts/ gaat.

<aside> 🛑 Let op dat je wel het commando php artisan serve heb draaien op de achtergrond

</aside>

Wildcards Constraints in Routes

Nu we weten hoe we statische pagina’s kunnen maken, kunnen we ook gaan kijken naar dynamische pagina’s.

De data van de pagina wordt dan bepaald door de informatie die in de url staat. Dus als je op een Post zou klikken, dan zie je daarna alleen de inhoud van dit post bericht.

Een dynamische url opvragen kan en daarvoor heb je een Wildcard nodig in de url. Een gedeelte in de URL is dynamisch en wil je in de code opvragen.

Hieronder staat een voorbeeld waarbij je post kan halen en dan aan de hand daarvan HTML bestanden kan inladen.

Route::get('posts/{post}', function ($slug) {
    $path = __DIR__."/../resources/posts/{$slug}.html";

    if (! file_exists($path)) {

        //ddd('file does not exist');
        return redirect('/');
        //abort(404);
    }

    $post = file_get_contents($path);

    return view('post', [
        'post' => $post 
    ]);
})->where('post','[A-z_\-]+');//regular expression