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
2 comentarios:
Y esto, tal cual está definido, ¿no puede provocar problemas en otras acciones de posts?
Quizás una acción function show_view ($id) funcionaría igual, simplemente teniendo en cuenta el nuevo formato de las URLS /posts/id/view
Pero una posible acción function xxx () sin parámetros, tengo mis dudas. ¿Lo has probado?
Saludos
No lo he probado exhaustivamente, pero una acción /blogs/index (para obtener una lista de blogs, por ejemplo) funciona correctamente.
$html->link() también genera los enlaces correctos siempre que en el array de la url añadamos la clave 'slug' (el parámetro, vamos).
Ahora mismo no tengo el proyecto delante y no recuerdo si lo he comprobado suficientemente, pero creo que las acciones con prefijo admin /admin/blogs/index funcionarían correctamente.
Publicar un comentario