domingo, 25 de enero de 2009

URL mejoradas con rutas personalizadas

La idea es la siguiente. A veces la estructura /controller/action/arguments de algunas URL de Cake son poco significativas para los usuarios. Es un detalle que a veces me resulta un poco molesto y en particular para un proyecto que tengo entre manos. Por ejemplo. Supongamos que tengo un CMS y quiero mostrar los comentarios a un post. Una posible URL sería:

/posts/show_comments/slug_del_post

Una URL mucho mejor sería

/posts/slug_del_post/show_comments

Esto se puede conseguir definiendo una ruta de la siguiente manera:

Router::connect('/posts/:slug/:action/*', array('controller' => 'posts'), array('pass' => array('slug')));

Ahora, la segunda URL nos dispara la acción show_comments del Posts controller y como extra, le pasa el argumento slug, de modo que la puedes definir así:

function show_comments ($slug) {...}

Todo esto sacado del manual