Quizás sea más fácil definir el Controlador sobre una anotación.
en route.yml:
MineTestBundle:
resource: "@MineTestBundle/Controller/"
type: annotation
A continuación, se puede definir la ruta directa en su controlador.
/**
* @Route("/foo")
*/
class FooController extends Controller {
/**
* @Route("/", name="_foo_index")
* @Template()
*/
public function indexAction() {
return array();
}
/**
* @Route("/{page}/", name="_foo_page")
* @Template()
*/
public function pageAction($page) {
return array('page' => $page);
}
}
Ahora, cuando se intenta acceder a /foo
se llega a la indexAction y cuando accede a /foo/1/
se llega a la pageaction.
Editar:
Lo siento por el malentendido. He intentado reproducir tu problema. La forma más fácil es definir 2 Rutas en su configuración como esta:
foo_route:
pattern: /foo/{page}/
defaults: { _controller: AcmeDemoBundle:Foo:list }
requirements:
name: ".+"
foo_route_foo:
pattern: /foo
defaults: { _controller: AcmeDemoBundle:Foo:list, page: 1 }
requirements:
name: ".+"
En la ruta sin el parámetro {página} Puede establecer el valor predeterminado de la página 1 .
Pero aquí en el libro de cocina es un capítulo How to allow a "/" character in a route parameter por lo que su posible permitir un / en la ruta así que todo lo que viene después de /foo/123/234/
está en la variable $page
y se puede dividir por sí mismo en su función.
¿Cuál es tan malo sobre haveing otra ruta? – Gigala