Skip to main content

Toets nabesspreking

Commemtaar in HTML

<?php //comments ?>
of
<!-- comments -->

Route Toevoegen

Route::redirect('/l', '/links');
of
Route::get('/li', 'LinksController@index' );
of
Route::resource('li','LinksController');

Zoek de verschillen op.

404 Error

http://127.0.0.1:8000/links123/edit

Kijk naar de Tabel en zie dat de route /links/{id}/edit is gedeineerd.gedefinieerd. Waarom dan toch een 404 error?

Delete button verplaatsen

Naar form.blade.php of naar edit.blade.php? Wat is het verschil?

Sorteervolgorde

https://stackoverflow.com/questions/17429427/laravel-eloquent-ordering-results-of-all

Lees dat eens door en probeer het alsnog te implementerenimplementeren.

New view

  1. Routering, web.php
  2. Control, linksController
  3. View, compact.blade.php
  4. Menu item - in welke blade file, kijk nog eens naar: https://www.roc.ovh/link/120#bkmrk-schematisch

Limiet aantal items (in Compact view)

In welke file? Is het onderdeel van de controller of van de view?

Controller

Zoek de 'take method op een collection' op in de Laravel documentatie.

View

Zoek hoe je PHP code kun toevoegen in een blade template en gebruik het PHP break commando om vroegtijdig uit een loop te breaken.

Aantal variabel maken

Maak het break commando afhanelijk van een variable die je aan de template meegeeeft.

Je moet hiervoor een aantal stappen nemen:
  1. Maak een form in de compact.blade.php waarin je de waarde (laten we deze 'show' noemen) 'show' opvraagt. Het form doet een post.

  2. Maak een routering voor de post van deze form, bijvoorbeeld:
    Route::post('/compact', 'LinksController@showCompact' );

  3. Maak de controller showCompact en vraag hierbij de posted variabelen op door Request $request als parameter mee te geven zoals je dat ook hebt gedaan bij de method newLink.

  4. De showcompact method is hetzelfde als de index method maar met dat verschil dat deze een tweede parameter aan de view mee geeft, namelijk show.

  5. In de compact.blade.php heb je nu twee mogelijkheden: je hebt een show variabele meegekregen, in dat geval toon je show lines of je hebt geen show variabele meegekregen en je toont de standaard 5 regels. Test hierop in je template en toon het jusite aantal regels.

Count the Clicks

Dit is een lastige maar als we het in kleine stapjes opdelen valt het ook wel weer mee. Let wel dat je elke stap apart test. Het stappenplan is als volgt:

  1. Database aanpassen met migrate. Voeg een regel toe aan de create_links_table.php en doe een migrate refresh(zie les over migrations). Vergeet de --seed optie niet om je nieuwe tabel te vullen.

    Ik denk dat het ook mogelijk moet zijn om de data te behouden, ik heb dat alleen nog niet gevonden; iemand?

  2. Template aanpassen. Nu moeten we zorgen dat elke keer als je op een link klikt, je iet naar die link gaat maar dat de tellen clicks in de database één wordt opgehoogd. Verander dus eerst de <a href=... in de template zodat deze niet naar de link gaat maar dat er een naar een nieuwe method in de controller wordt gesprongen. Bijvoorbeeld de method click.

    De link geeft ook een parameter mee (via GET) en deze parameter is het id van de link. Deze variabele kan je meegeven door in de URL van de routing {linkid} op te nemen. De variable wordt dan doorgegeven aan de method in de controller.

  3. Routering aanpassen De volgende stap is de routering. Omdat we de link via een GET gepost hebben, zul je een Route::get moeten gebruiken.
    Zoals hierboven uitgelegd moet je zorgen dat de variabale wordt doorgegeven. Als je {linkid} gebruikt in de routing dan kun je in de method deze variabale als input variabale definiëren.
  4. Controller aanpassen. $Link is een model. Kijk maar eens in de file app/Link.php. Daar kun je zien dat Link een extentie is van het Model (van MVC).  Lees deze pagina: https://stackoverflow.com/questions/33027047/what-is-the-difference-between-find-findorfail-first-firstorfail-get

    Op deze pagina staan methods beschreven van het model. Om een record te zoeken met een bepaald ID gebruiken we $link = Link::findOrFail($id);  Dit hebben we ook in een van onze eerdere methods gebruikt.

    IN dit artikel staat beschreven hoe we eenvoudig een kolom in de tabel kunnen omhogen: https://stackoverflow.com/questions/29816123/increment-columns-in-laravel

    Er zijn meerdere methodes, je kunt ook een query uitvoeren, maar in het artikel staat een makkelijk voorbeeld.

    Als de jusite kolom één is opgehoogd dan moeten we alleen nog naar de juiste link doorlinken. Dat kan op verschillende manieren. Vie een HTTP redirect (dat is html code die een redirect bevat). of via een Laravel redirect. Daarvoor moet je wel redirect()->away() gebruiken. Zoek zelf op waarom dat zo is en waarom je geen 'kale' redirect kan gebruiken.

  5. Template. Als laatste stap kunnen we de clicks kolom nog toevoegen op onze index page (en/of compact page) zodat we kunnen zien dat het aantal clicks wordt opgehoogd.

--