Las colecciones de rutas de objetos incluyen varias opciones para personalizar completamente su funcionamiento. En muchos casos estas opciones son suficientes para configurar la colección sin necesidad de crear una nueva colección propia. El libro The symfony Reference Book contiene la lista completa de todas las opciones de las colecciones de rutas.
2.7.1. Rutas de la acción
Cada colección de rutas admite tres opciones diferentes que determinan exactamente las rutas que se generan en la colección. Sin entrar en muchos detalles, la siguiente colección generaría las siete rutas por defecto junto con una colección de rutas adicional y una ruta de objeto:
pageAdmin:
class: acClientObjectRouteCollection
options:
# ...
actions: [list, new, create, edit, update, delete, show]
collection_actions:
indexAlt: [get]
object_actions:
toggle: [put]
2.7.2. Columna
Por defecto todas las URL generadas emplean la clave primaria del modelo, que
también se utiliza para buscar los objetos. Obviamente este comportamiento se
puede modificar con facilidad. El siguiente ejemplo utiliza la columna slug
en vez de la clave primaria:
pageAdmin:
class: acClientObjectRouteCollection
options:
# ...
column: slug
2.7.3. Métodos del modelo
Por defecto la ruta obtiene todos los objetos relacionados con la colección
y utiliza la columna especificada en column
para las rutas de los objetos.
Si necesitas redefinir ese comportamiento, añade la opción model_methods
en
la ruta. En este ejemplo se deben añadir los métodos fetchAll()
y findForRoute()
a la clase PageTable
. A los dos métodos se les pasa como argumento un array
con los parámetros de la petición:
pageAdmin:
class: acClientObjectRouteCollection
options:
# ...
model_methods:
list: fetchAll
object: findForRoute
2.7.4. Parámetros por defecto
Por último, imagina que todas las rutas de la colección necesitan un determinado
parámetro en la petición. Esto se puede conseguir fácilmente con la opción
default_params
:
pageAdmin:
class: acClientObjectRouteCollection
options:
# ...
default_params:
foo: bar