2010-06-19 12 views

Respuesta

12

sólo tiene que suministrar una adecuada expresión regular:

my_foobar_route: 
    url: /example/routing/:s1/:id 
    requirements: 
    id: \d+ 
    s1: "[a-zA-Z]+" 

Editar: Añadido comillas alrededor de la segunda expresión regular; YAML interpreta [...] como una matriz de parámetros. Gracias :-) @chiborg

+1

Esto no funcionará hasta que coloque la expresión regular entre comillas. – chiborg

+0

Editado, gracias. Olvídese siempre de que '[]' se interpreta como una matriz YAML, mis expresiones regulares habituales en el enrutamiento casi siempre terminan siendo '\ d +' ;-) – richsage

0

Casi todo lo que viene a través de la url es una cadena - cualquier requisito es más fuerte que esto, usted no necesita hacer nada, su parámetro ya es una cadena. ¿Tal vez quieres una cadena especialmente formateada?

4

Si no le importa lo que la cadena contiene o si usted no sabe de antemano lo que va a contener, intente lo siguiente:

my_foobar_route: 
    url: /example/routing/:s1/:id 
    requirements: 
    id: \d+ 
    s1: "[^/]+" 

Esto permitirá que todos los caracteres excepto el carácter '/' que se utiliza como un separador para los parámetros. Con la expresión

my_foobar_route: 
    url: /example/routing/:s1/:id 
    requirements: 
    id: \d+ 
    s1: "[^/]{3,}" 

se puede forzar la cadena para que tenga al menos tres caracteres de longitud.

¡No olvide poner entre paréntesis Regexes entre corchetes! Si los olvida, el analizador YAML para las rutas los interpretará como una expresión de matriz.

Cuestiones relacionadas