-
Notifications
You must be signed in to change notification settings - Fork 29
Front Controller
inghamn edited this page Sep 14, 2012
·
1 revision
Apache is configured to send all requests through the Front Controller, index.php.
- Parse the URL of the request
- Create an empty Template
- Check access control
- Load the Controller
- call the Action on the Controller, passing in the Template
- render the Template that comes back
So far, we're able to get away with very simple routing. We just read urls as /controller/action. We have a little bit of special routing code for Open311, but the default routing code just:
<?php
// Check for default routes
elseif(preg_match('#'.BASE_URI.'(/([a-zA-Z0-9]+))?(/([a-zA-Z0-9]+))?#',
$_SERVER['REQUEST_URI'],
$matches)) {
$resource = isset($matches[2]) ? $matches[2] : 'index';
$action = isset($matches[4]) ? $matches[4] : 'index';
}
This assumes:
- URL matches controller and action names
- There are only two parts to the route parsing
If either of these changes, we'll need to write some more custom route code, or look at adopting some other library for routing. But right now, I'm not seeing anything that we want to do that can't be accomplished with these simple routes.
- Coding Style
- Accessibility (Section 508)
- Progressive Enhancement
- Unobtrusive Javascript