I am learning MVC, and trying to understand routing.
I understand that if I want to show an individual blog post for site.com/54, my route would be something like
//index.php
$controller = new Controller();
if ( preg_match("#/(0-9.)#", $uri, $matches) ) {
$controller->showAction($matches[1]);
}
which would lead to my controller
//controllers.php
class Controller
{
private function showAction($id) {
$post = getPostById($id);
$view = new View('views/show.php');
}
}
And, on the other hand, a sensible thing to do for different static pages is perhaps
//index.php
...
} elseif ($uri == '/about') {
$controller->aboutAction();
} elseif ($uri == '/contact') {
$controller->contactAction();
} elseif ($uri == '/') {
$controller->indexAction();
} else {
$controller->missingAction();
}
My question is, what about the in-between? For example, apple.com/ipad/overview/ and apple.com/ipad/features/. They are different pages, so it seems like the latter is sensible (i.e. unique controller method for each page). But then, when you're on /overview, you still need to know you're a sub-page of /ipad (so you can highlight the iPad button in the navigation). If you did the first method (regex parsing), you'd know that (i.e. you could use $matches[1] when constructing your navigation). If you use the second method, it seems like in your view you'd have to do something like $current_product = 'ipad'
so your nav would know about it. But this could get cumbersome.
What's the appropriate method?