Create
Via een form gaan we een nieuwe link aanmaken. We gaan dus onze C van CRUD maken.
In deze les hebben we uiteindelijk ook een controler gemaakt (C van MVC) die een nieuwe link aanmaakt. Je moet zel fin de documentatie van Laravel uitzoeken hoe je een controller aanmaakt.
Aan het eind van de les kunnen we een nieuwe link aanmaken.
Nieuwe Link
Laten we eerst een eenvoudige link maken onderaan de pagina die we in de vorige les hebben gemaakt. Open de links.blade.php file en zet de volgende link onder de tabel die je in de vorige les heb gemaakt.
<a href="/newlink"> New </a>
Uiteindelijk maken we hier een menu van maar dat doen we later.
Maak een nieuwe template file en noem deze newlink.blade.php.
Opdracht 1
Maak een route in de routes/web.php file en verwijs naar de newlink.blade.php op dezelfde manier als we dat bij de welcome pagina hebben gedaan.
Plaats een eenvoudige echo "test"; in de newlink.blade.php en test of de nieuwe routering goed werkt.
Form
in de newlink.blade.php flie maken we nu een form.
<form action="/submitlink" method="post">
@csrf <!-- {{ csrf_field() }} -->
Title <input type="text" class="form-control" id="title" name="title" placeholder="Title"><br>
URL <input type="text" class="form-control" id="url" name="url" placeholder="URL"><br>
Description <textarea class="form-control" id="description" name="description" placeholder="description"></textarea><br>
<button type="submit" class="btn btn-default">Submit</button>
</form>
Opdracht 2
Zet het form in een nette tabel; maak 3 regels en twee kolommen.
Create New
Als het form wordt ge-submit dat moet er een nieuw record komen. We moeten eerst zorgen voor de juiste routering. Het form roept namelijk /submitlink aan en via de routering kunnen we aangeven wat er dan moet gebeuren.
De routering definiƫren we als volgt:
Route::post('/submitlink', function(Request $request) {
Deze routering 'vangt' de /submitlink op en roept de functie aan met als parameter de variabelen die zijn gepost.
Nu maken we een nieuwe link, zetten de waarden en slaan die op.
$link = new \App\Link;
$link->title = $request->title;
$link->url = $request->url;
$link->description = $request->description;
$link->save();
Deze code hoort eigenlijk niet in de routering file, althans het is netter om deze code ergens anders te plaatsen.
Als we de code in de routing (web.php) plaatsen dan moeten we de request module includen:
use Illuminate\Http\Request;
Laten we de code testen. Wat gebeurt er als we een nieuwe link hebben toegevoegd? Waarom zien we niets?
Controller
Route::post('/submitlink', 'LinksController@newlink');
Zoek op hoe je een controller maakt op: https://laravel.com/docs/5.7/controllers
Aan het eind gaan we terug naar de /links pagina met:
return redirect('/links');
Test de code en maak een paar nieuwe links aan. Let op dat de input nog niet wordt gevalideerd (op bijvoorbeeld maximaal aantal characters). Ook dat doen we later.
--