Ver índice de contenidos del libro

5.5. La clase sfRoute

Las rutas definidas en el archivo routing.yml se convierten internamente en objetos de la clase sfRoute. Si quieres utilizar otra clase, puedes indicarlo en la opción class de la definición de la ruta.

Si conoces el protocolo HTTP, sabrás que define diferentes métodos para realizar las peticiones: GET, POST, HEAD, DELETE y PUT. Los tres primeros métodos los soportan todos los navegadores, pero los últimos dos métodos no están soportados.

Si quieres restringir una ruta para que sólo se tenga en cuenta para unos métodos HTTP específicos, puedes modificar la clase de la ruta por sfRequestRoute y añadir la restricción en la variable virtual sf_method:

job_show_user:
  url:   /job/:company/:location/:id/:position
  class: sfRequestRoute
  param: { module: job, action: show }
  requirements:
    id: \d+
    sf_method: [get]

Nota Restringir una ruta a unos métodos HTTP específicos no es exactamente lo mismo que utilizar sfWebRequest::isMethod() en las acciones. El motivo es que, cuando el método HTTP no es el que se requiere, el sistema de enrutamiento sigue buscando entre las siguientes rutas.