Een POST wijzigen - UPDATE
Het wordt nu tijd dat we een post ook kunnen aanpassen. Hiervoor hebben we een formulier nodig om een post aan te kunnen passen.
Het wijzigingsformulier wil je alvast invullen met de huidige gegevens dus het is belangrijk dat deze vooraf worden opgehaald uit de database.
Het process loopt alsvolgt:
- Toon de betreffende post met button wijzigen (met id van de post)
- Route posts-edit/{id} toegevoegd
- Controller posts-edit haalt de gegevens van de betreffende post op uit de database en stuurt deze naar de view
- posts-edit.view toont de gegevens uit de database in een formulier met update button
- Bij klik op update button wordt formulier verstuurd naar route: posts-update/{id}
- De controller posts-update doet een update op de database en stuurt terug naar /posts
Opgave J6.1 - wijzig button toevoegen
Voeg een 'Wijzig' button toe aan de 'posts' overzichtspagina. Doe dit als een formulier net als bij de verwijder button.
method="get"
action="/posts-edit/{id}" waarbij {id} = $post['id'] is dus: action="/posts-edit/<?= $post['id'] ?>"
- Geef de button als opmaak: class="border-1 border-gray-600 rounded-md px-2 py-1 hover:bg-gray-100 cursor-pointer"
Tip:
zet beide formulieren binnen een div met class="flex justify-between" voor een wat mooiere opmaak
<div class="flex justify-between mt-4">
<!-- button wijzig -->
<!-- button verwijder -->
</div>
Uitwerking
Opgave J6.2 - Routes toevoegen
Voeg twee nieuwe route's toe aan router.php
$route->get('posts-edit/{id}', "controllers/posts-edit.php");
$route->post('posts-update/{id}', "controllers/posts-update.php");
Uitwerking
Opgave J6.3 - Edit controller
Maak een nieuw bestand controllers/posts-edit.php
- Valideer of id is meegestuurd
- zo ja, haal de gegevens op uit de database
- Stuur de opgehaalde gegevens naar de view: posts-edit
Uitwerking
/app/controllers/posts-edit.php
Opgave J6.4 - Wijzig formulier
Maak en nieuw bestand views/posts-edit.view.php
- Copy-paste de inhoud van bv home.view.php en haal weg wat niet nodig is.
- Pas de titel aan (regel 2)
- Maak een formulier met:
method="post" en action="/post-update/<?= $post['id']?>"
- csrf-token
- textfield voor title (met
value="<?= $post['title'] ?>" )
- textarea voor content (met
value="<?= $post['content'] ?>" )
- submit button om te versturen
Uitwerking
/app/views/posts-edit.view.php
Opgave J6.5 - Wijzig controller
Maak een controller controller/posts-update.php
- Valideer of id, title en content zijn verstuurd
- Maak een database object aan
- Voer een update-query uit (gebruik cheatSheat voor eventuele hulp of doe een wijziging met HeidiSQL en kijk onderaan)
- Geef een flash message "Post succesvol gewijzigd"
- verwijs door naar /posts
Uitwerking
/app/controllers/posts-update.php