The Daily Dev Log - 4
On the subject of updating urls in a web framework that gives you access to a router, it’s important to have flexibility in writing those routes.
In CakePHP, the following is possible:
Router::connect('/:date/:category/:id-:slug',
array('controller' => 'posts', 'action' => 'view'),
array('id' => '[0-9]+', 'category' => '[\w_-]+', 'slug' => '[\w_-]+', 'date' => '[0-9]{4}-[0-9]{2}-[0-9]{2}')
);
It’s pretty easy to constrain each section as necessary using regular expressions. CakePHP also allows the usage of Router Classes that can use PHP to figure out whether a particular rule maps to a request, and how to map that request.
In Symfony, most routes are defined in a yml file:
post_view_seo:
url: /:date/:category/:id/:slug/
param: { module: posts, action: view }
requirements: { id: "[\d]+", category: "[\w_-]+", slug: "[\w_-]+", date: "[0-9]{4}-[0-9]{2}-[0-9]{2}" }
You can also define routes in a php file. But it feels icky to do that and combine it with yml routing.