2011-01-15 19 views
6

Estoy usando playframework, y espero generar URLs complejas como stackoverflow. Por ejemplo, yo quiero generar URL de una pregunta:¿Cómo generar una URL compleja como stackoverflow?

http://aaa.com/questions/123456/How-to-generator-a-complex-url 

Nota la última parte, es el título de la pregunta.

Pero no sé cómo hacerlo.

ACTUALIZADO

En el playframework, podemos definir rutas en conf/routes archivo, y lo que hago es:

GET /questions/{<\d+>id} Questions.show

De esta manera, cuando llamamos @{Questions.show(id)} en las vistas, se generará:

http://aaa.com/questions/123456

Pero cómo dejar que el generado tenga un título parte, es difícil.

Respuesta

11

Con playframework es fácil generar dicha url. En sus rutas presentar agrega esto:

GET /questions/{id}/{title}  YourController.yourMethod 

Ver el documento en el sitio playframework sobre el enrutamiento para obtener más información

en su página html:

<a href="@{YourController.yourMethod(id,title.slugify())}"> 

método slugify de JavaExtensions, limpiar su título de los caracteres reservados (see doc)

2

Es un reescritor de URL del lado del servidor. En el caso de SO, no importa que escriba {...}/questions/4698625/how-to-generate-complex-url-like-stackoverflow o {...}/questions/4698625 - ambos redirigen al mismo contenido. Entonces este postfix se usa solo para aumentar la legibilidad de una url.

Para ver más detalles sobre la reescritura de URL, consulte this post.

UPD: para generar un sufijo tal,

  1. echar un título del contenido,
  2. reducir varias espacios en blanco en una sola
  3. reemplazar todos los espacios en blanco con el guión (-)
  4. eliminar todos los símbolos que no sean letras de un título

Es mejor realizar estas operaciones con expresiones regulares

+0

gracias, pero la parte difícil es cómo hacerlo en el marco del juego. – Freewind

+0

@Freewind, lo siento, leí mal sobre playframework – Genius

Cuestiones relacionadas