Stel ik heb een categorie "schoenen" met de url /schoenen en een pagina "over-ons" met de url /over-ons. Hoe weet het framework of het een categorie of een pagina betreft?
Balen! Ik kan me voorstellen dat je i.v.m. SEO geen /category in je URL wilt. Er zijn genoeg systemen waarbij dat ook niet nodig is. Ik werk veel met Opencart. Daarbij kan ik gewoon /schoenen of /over-ons gebruiken, ongeacht het een categorie of een content pagina is.
OpenCart slaat die URL-aliassen op in een tabel die een SEO-URL zoals 'laptop-notebook' koppelt aan een URL-parameter zoals 'category_id=18'. De controller filtert vervolgens op enkele van die parameters (category_id, product_id en dergelijke).
Die opzet is echter alleen acceptabel als je vooraf al weet welke controllers er zijn en welke parameters die nodig hebben. Wil je een schaalbaar framework bouwen, dan moet je verder gaan en het relateren van parameters aan controllers configureerbaar maken.
Niet dat je die moet kopiƫren, maar als je zelf een MVC-framework bouwt, doe je er verstandig aan je in te lezen in de concepten van andere MVC-frameworks.
Routing is nogal een breed concept. Dat is gewoon niet te vertalen in: "Heb je effe een script voor me?"
Je dient in alle bekende frameworks zelf routes te definiƫren. Jouw applicatie moet vervolgens de gedefinieerde routes vergelijken met de URI die door de gebruiker opgevraagd wordt. Door variabelen in de routes te plaatsen kunnen deze doorgegeven worden aan de controller. Door bijvoorbeeld slugs te gebruiken (doet deze website ook) maak je het beter SEO.
Voorbeeldje:
route: /category/{category}
controller: ShopCategory
action: show
Controller die aangeroepen moet worden:
<?php
class ShopCategoryController extends BaseController
{
public function showAction($category)
{
// laat category met id=$category zien
}
}
?>