Forse è più semplice definire il controller su un'annotazione.
in route.yml:
MineTestBundle:
resource: "@MineTestBundle/Controller/"
type: annotation
Quindi è possibile definire il percorso diretto nel controller.
/**
* @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);
}
}
Ora, quando si tenta di accedere /foo
si arriva alla indexAction e quando si accede /foo/1/
venite al pageAction.
Edit:
Ci scusiamo per il malinteso. Ho provato a riprodurre il tuo problema. Il modo più semplice è quello di definire 2 percorsi nella configurazione in questo modo:
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: ".+"
nel percorso senza il parametro {page} È possibile impostare il valore predefinito pagina .
Ma qui, nel libro di cucina è un capitolo How to allow a "/" character in a route parameter per cui il suo possibile per consentire un / nel percorso in modo tutto ciò che viene dopo è /foo/123/234/
nella variabile $page
e li si può dividere per se stessi nella funzione.
che cosa è così male per haveing un'altra strada? – Gigala