Ver índice de contenidos del libro

12.2. Los módulos de la aplicación backend

En la aplicación frontend utilizamos la tarea propel:generate-module para generar automáticamente un módulo sencillo que permite realizar las opciones básicas sobre una clase del modelo. En la aplicación backend vamos a utilizar la tarea propel:generate-admin para generar una interfaz completa de administración para una clase del modelo:

$ php symfony propel:generate-admin backend JobeetJob --module=job
$ php symfony propel:generate-admin backend JobeetCategory --module=category

Los dos comandos anteriores crean respectivamente los módulos job y category para las clases del modelo JobeetJob y JobeetCategory.

La opción --module permite redefinir el nombre que la tarea genera por defecto para cada módulo (que en el caso de la clase JobeetJob hubiera sido jobeet_job).

La tarea propel:generate-admin también crea automáticamente una ruta propia para cada módulo:

# apps/backend/config/routing.yml
jobeet_job:
  class: sfPropelRouteCollection
  options:
    model:                JobeetJob
    module:               job
    prefix_path:          job
    column:               id
    with_wildcard_routes: true

Como era de esperar, el tipo de ruta que utiliza el generador de la parte de administración es sfPropelRouteCollection, ya que el objetivo de la interfaz de administración es la gestión completa de los objetos del modelo.

La definición de la ruta anterior también incluye algunas opciones que no habías visto hasta ahora:

  • prefix_path: define el prefijo utilizado en las rutas generadas (en este ejemplo, la página de modificación de una oferta de trabajo será algo como /job/1/edit).
  • column: define qué columna de la tabla se utiliza en las URL de los enlaces que hacen referencia a un objeto.
  • with_wildcard_routes: como la interfaz de administración incluye muchas más posibilidades que las operaciones básicas (crear, actualizar, obtener y borrar objetos), esta opción permite definir más acciones sobre objetos y colecciones de objetos sin necesidad de modificar la ruta.

Nota Como siempre, es una buena idea leer la ayuda de una tarea antes de utilizarla:

$ php symfony help propel:generate-admin

La ayuda de Symfony muestra todos los argumentos y opciones de cada tarea y también muestra algunos ejemplos de uso.