Ver índice de contenidos del libro

7.1. La ruta de la categoría

En primer lugar, debemos crear una nueva ruta para que las páginas de las categorías tengan URL limpias. Añade la siguiente ruta al principio del todo del archivo routing.yml:

# apps/frontend/config/routing.yml
category:
  url:      /category/:slug
  class:    sfPropelRoute
  param:    { module: category, action: show }
  options:  { model: JobeetCategory, type: object }

Nota Siempre que vas a añadir una nueva característica en la aplicación, es una buena práctica pensar primero en su URL y después crear la ruta asociada. Además, esta práctica es obligatoria si has borrado las rutas por defecto de Symfony.

Las rutas pueden utilizar como parámetro cualquier columna de su objeto asociado. Las rutas también pueden emplear cualquier otro valor para el que exista un método accesor de tipo get() en la clase del objeto. Como slug no es una columna de la tabla category, tenemos que añadir un método accesor en JobeetCategory para que la ruta anterior pueda funcionar:

// lib/model/JobeetCategory.php
public function getSlug()
{
  return Jobeet::slugify($this->getName());
}