2016-04-05 6 views
1

Ich konnte keine Antwort auf meine Frage finden. Ich habe diese Art von Route. pattern: /foo/{dir}/{dir1}/{ficname} Ich würde gerne wissen, ob un so etwas wieSymfony 2 Routing-Muster Länge {1,}

pattern: /foo/{dir}/{ficname} 
    requirements: 
     dir: ([a-zA-Z]+/?)+ 

EDIT tun könnte. In meinem Fall + war zu viel permisive und finaly (? [A-zA-Z] + /) + war nicht genug.

Endlösung (i wählen):

pattern: /foo/{dir}/{ficname} 
    requirements: 
     dir: ([^/]+)||([^/]+/[^/]+)+ 

Korrektur

pattern: /foo/{dir}/{ficname} 
    requirements: 
     dir: [^/]+(/[^/])* 

Ich habe ein Problem mit der alten Lösung bekommt, wenn sie mehr, wo als 2 '/', weil der zweite Durchgang kein cha finden kann ractere sonst '/' und wurde + dann nicht

+1

können Sie '. +' Regex verwenden, so 'dir:. +' – takeit

+0

Es funktioniert perfekt Vielen Dank ^^ –

Antwort

1

ich diese Route hinzugefügt funktionieren könnte:

dirs-filename: 
    path: /foo/{dirs}/{filename} 
    requirements: 
     dirs: ([a-zA-Z]+/?)+ 

Wenn ich überprüfen:

bin/console router:match /foo/dir/file   # OK 
bin/console router:match /foo/dir/subdir/file  # OK 

ich das Ihnen helfen kann hoffen.

+0

Sie verwenden derzeit Symfony 3 nicht 2, aber immer noch arbeiten (nächste vielleicht sollten Sie Tag ^^) –

+0

Der einzige Unterschied ist die App/Konsole vs bin/Konsole, nein? Die Routing-Komponente ist identisch. – mykiwi

+0

Ich bin mir nicht sicher, aber ich denke wie du (ich arbeite auch an SF3-Projekt und ich sah keine Art off difference auf Routing-Komponente zwischen SF2 und SF3) –