In ons menu is niet te zien op welke pagina we op dit moment zijn. We gaan dit wijzigen. Aan het eind van deze opdracht zal er een streep staan onder de huidige pagina.
De eerste functie die we gaan toevoegen heet isUri(...)
Deze functie kijkt of de huidige uri hetzelfde is als een gegeven uri. De functie aanroep doen we in het navigatie-menu.view.php
<a href="/contact" class="<?= isUri("contact") ? 'underline ' : '' ?>text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md font-medium">Contact</a>
In de class voegen we deze code toe
<?= isUri("contact") ? 'underline ' : '' ?>
Dit is een inline if
-statement. Het werkt bijna hetzelfde als een normale vraag
isUri("contact")?
De eerste waarde is bij true
, na de dubbele punt komt de false
waarde
Dus bij true wordt er op het scherm geschreven underline
Bij false wordt er een lege string (niets) op het scherm geschreven. Let op de spatie achter 'underline ' als deze er niet zou staan dan wordt het resultaat underlinetext-gray-300 en dan werkt de opmaak niet.
Nu moet de functie nog worden gemaakt
Maak een bestand /src/functions.php
en voeg aan index.php een require toe zodat functies worden ingeladen. Doe dit tussen de require van config.php en router.php.
//handige functies require __DIR__ . "/../src/functions.php";
In onze router.php hadden we al een stukje code die bij een REQUEST_URI de uri uitleest. Dus indien het verzoek http://localhost/contact
is wordt er contact
van gemaakt.
trim(parse_url($_SERVER['REQUEST_URI'])['path'], "/")
Schrijf de functie
function isUri(string $uri) { if ( ... hier komt jou code ...) { return true; } return false; }