Ik zou het misschien iets anders aanpakken dan. Bijvoorbeeld door eerst te controleren of er een id is ingesteld, en anders uitgaan van de categorie-naam. Wat ik niet helemaal begrijp in je huidige controller is wat er precies in $params zit, je gaf voorheen $params['id'] door als categorie/query_string naam? :/
Wat je zou kunnen doen, maar weet niet helemaal of dit de goede plaats is, is in de get_categorie_naam() controleren op $_GET['menu_id'], en als deze bestaat en numeriek is, zou deze voorrang kunnen krijgen op de $categorie die nu wordt doorgegeven. Op die manier hoeft er mogelijk niets aangepast te worden in de controller en blijkt uit de implementatie van get_categorie_naam() ook echt dat dit een uitzonderingssituatie betreft die net een iets andere afhandeling heeft.
Bijvoorbeeld als volgt:
<?php
public function get_menu_items($categorie) { // als voorheen
$sql = 'SELECT menu_item
, omschrijving1
, omschrijving2
, omschrijving3
, omschrijving4
, omschrijving
, prijs
FROM menu_items
WHERE';
// definieer uitzondering - is er een id ingesteld in de URL?
if (isset($_GET['menu_id']) && preg_match('#^[1-9][0-9]*$#', $_GET['menu_id']) == 1) {
$sql .= ' item_id = ?';
$args = array($_GET['menu_id']);
} else {
// default
$args = array($categorie);
$sql .= ' query_string = ?';
}
$stmt = $this->pdo->prepare($sql);
$stmt->execute($args);
return $stmt->fetch();
}
?>
Geen idee of dat werkt maar het idee lijkt mij duidelijk. En anders zul je even naar $params moeten kijken.
Hi Thomas, Ik denk dat ik in mijn eerdere bericht iets te vroeg heb gejuigd. De verschillende menu's werden inderdaad aangeroepen op de manier die ik voorstelde, maar de listings (voorgerechten, hoofdgerechten etc) werken niet meer. Ik ga nu de door jou manier proberen
Om je een beter idee te geven wat er zou moeten gebeuren: Dit is de link van de betreffende pagina
Uhm, uit welke karakters kunnen die namen dan bestaan? Hier zou je dan een aparte case voor moeten maken. Maar wellicht is het dan handiger om de naamgeving zo op te zetten zodat er eigenlijk maar één smaak is (oftewel geef URL's één en dezelfde opbouw) anders wordt je code zo'n spaghetti :p.
Eigenlijk zou dat dus de netste oplossing zijn: een uniforme naamgeving, dan hoef je al die uitzonderingsregels ook niet te programmeren. Dit houdt mogelijk in dat je dit probleem eigenlijk ergens anders zou moeten oplossen (dataverrijking in de database).