
Om een post te kunnen bekijken heb je minimaal 3 dingen nodig
$route->get('posts-show/{id}','controllers/posts-show.php');
<a href="posts-show/67">Show post 67</a>
Of dynamisch (bv)
<a href="/posts-show/<?= $post['id'] ?>" class="text-indigo-500">Open</a>
Route
In de route zie je {id} dit is een manier om het id (primaire sleutel) van een post te kunnen meesturen. Op die manier weet je welke post je uit de database moet ophalen.
In de controller kan je dan gebruik maken van
$request->id
Indien je op de link van item 4 klikt zal het $request->id 67 zijn
Controlller
In de controller zullen de volgende stappen worden genomen.
<?php // stap 1 valideren of de id bestaat $request->validate([ 'id' => 'required' ]); // stap 2 database Object aanmaken $db = new Database(); // stap 3 query uitvoeren $post = $db->query("SELECT * FROM posts WHERE id = :id", [ 'id' => $request->id ])->fetch(); // stap 4 controleren of de post bestaat if(!$post) { abort(404); } // stap 5 post meegeven aan de view view("posts-show", [ 'post' => $post ]);
Bij stap 1 wordt de validatie gedaan. Dit stukje zal later nog worden toegelicht in paragraaf K Validatie
In stap 4 zie je if( !$post){ De ! hierin betekent not. Dus als de $post null of leeg is
View
De view is niet heel spectaculair, als het goed is beschik je al over de kennis om die zelf in te vullen
Maak de route aan in router.php (code staat bij stap 1)
Maak de controller app/controllers/posts-show.php en copy de juiste code hierin
Maak de view app/views/posts-show.view.php en zorg dat de juiste gegevens van de post zichtbaar zijn. Minimaal de title en content.
Tip. Copy-paste de code van een reeds bestaande view en pas aan wat nodig.
Uitwerking
app/router.php
app/controllers/posts-show.php
app/views/posts-show.view.php
Een post is gemaakt door een bepaalde gebruiker. In de database is dit aangegeven in het veld user_id.
Het zou natuurlijk mooi zijn om bij het tonen van een post ook de betreffende gebruiker op het scherm te tonen.
Pas de query in de controller aan zodat ook de gegevens van de schrijver van de post worden opgehaald.
Pas de view aan zodat ook de schrijver van de post wordt getoond.
Uitwerking
app/controllers/posts-show.php
In onze overzichtspagina 'posts' staat nu bij elke tekst een lange tekst. Deze teksten gaan we inkorten en een 'lees meer' toevoegen.
Als je op 'lees meer' klikt ga je naar de show pagina.

De 'lees meer' is een link naar /posts-show/id waarbij het id het id van de post.
De tekst inkorten kan d.m.v. de PHP functie substr()
substr("Hello world!", 0, 5); // outputs "Hello" substr("Hello world!", 0, 3); // outputs "Hel"
En link kan er bijvoorbeeld zo uit zien
<a href="/posts-show/<?= $post['id'] ?>" class="text-indigo-500">...lees meer</a>
Kort de content van de post in tot 25 tekens d.m.v. substr() en zet daarachter een link om meer te lezen
Uitwerking