Im Play 1.x haben Sie den http.path param, die Sie eine URL abbinden zu jeder RouteWie kann ich allen Routen in Play Framework 2 ein Präfix hinzufügen?
Wie kann ich some hinzufügen ähnlich im Spiel 2.0 erreichen?
Im Play 1.x haben Sie den http.path param, die Sie eine URL abbinden zu jeder RouteWie kann ich allen Routen in Play Framework 2 ein Präfix hinzufügen?
Wie kann ich some hinzufügen ähnlich im Spiel 2.0 erreichen?
ich play's discussion group gefragt und sie hat mir geholfen, diese erste Version
zu erreichen erstelle ich eine PrefixedRequest wie diese
import play.api.mvc.RequestHeader
import play.api.Play.configuration
import play.api.Play.current
class PrefixedRequest(request: RequestHeader) extends RequestHeader {
def headers = request.headers
def queryString = request.queryString
// strip first part of path and uri if it matches http.path config
def path = ("^" + prefix).r.replaceFirstIn(request.path, "/")
def uri = ("^" + prefix).r.replaceFirstIn(request.uri, "/")
def method = request.method
def remoteAddress = request.remoteAddress
lazy val prefix = {
val config = configuration.getString("http.path").getOrElse("")
if (config.endsWith("/")) config else config + "/"
}
}
object PrefixedRequest {
def apply(request: RequestHeader) = new PrefixedRequest(request)
}
Dann habe ich es in Global.scala
import play.api.GlobalSettings
import play.api.mvc.RequestHeader
import play.api.mvc.Handler
object Global extends GlobalSettings {
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
super.onRouteRequest(PrefixedRequest(request))
}
}
finnally hinzugefügt dies zu application.conf
http.path=/prefix/
Es scheint zu funktionieren, aber ich konnte nicht herausfinden, wie man den umgekehrten Routen dieses Präfix hinzufügt ... kann jemand eine Hand auf diesem Teil geben?
-
einige nützliche Links
Im Play 2.1 können Sie das tun mit der folgenden Option in conf/application.conf
:
application.context="/your/prefix"
aus dem Spiel 2.4 Diese Eigenschaft heißt play.http.context
(entnommen aus dem Kommentar von Gman).
Dies ist viel einfacher als die angenommene Antwort (die möglicherweise nicht funktioniert haben im Spiel 2.0) – Nathan
Dies ist die richtige Antwort –
Nur um andere Leute von Google wissen zu lassen, in Play 2.4 hat es sich geändert zu 'play.http.context' (siehe https://www.playframework.com/documentation/2.4. x/Migration24) – Gman
anscheinend, diese Funktion wird nicht vor Version 2.1 enthalten sein - https://github.com/playframework/Play20/commit/da6bbc4 – opensas
Es könnte gut für i18n sein (/ fr,/en ...) – iwalktheline
I denke, du wärst besser dran, http://www.playframework.org/documentation/api/2.0/scala/play/api/mvc/WrappedRequest.html – Drew