2012-08-12 12 views
7

खेलने 1.x में आप http.path परम जो हर मार्गPlay Framework 2 में मेरे सभी मार्गों के लिए उपसर्ग कैसे जोड़ें?

http.param

मैं खेलने 2.0 में इसी तरह someting कैसे प्राप्त कर सकते में जोड़ने के लिए आप एक यूआरएल सेट करने की अनुमति थी?

उत्तर

5

मैं play's discussion group में पूछा और उन्होंने मुझे इस प्रारंभिक संस्करण

प्राप्त मैं इस

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) 
} 

तब मैं 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 जोड़ा की तरह एक PrefixedRequest बनाने में मदद की यह application.conf

http.path=/prefix/ 
पर

ऐसा लगता है, लेकिन मुझे यह पता नहीं लगा कि उल्टा मार्गों में उस उपसर्ग को कैसे जोड़ना है ... क्या कोई उस हिस्से पर हाथ लगा सकता है?

-

कुछ उपयोगी लिंक

चेक इस thread और docs

+0

जाहिर है, इन फीचर को संस्करण 2.1 से पहले शामिल नहीं किया जाएगा - https://github.com/playframework/Play20/commit/da6bbc4 – opensas

+0

यह i18n (/ fr,/en ...) – iwalktheline

+1

I के लिए अच्छा हो सकता है I लगता है कि आप विस्तार से बेहतर होंगे http://www.playframework.org/documentation/api/2.0/scala/play/api/mvc/WrappedRequest.html – Drew

25

प्ले 2.1 में आप क्या कर सकते हैं कि conf/application.conf में निम्नलिखित विकल्प के साथ:

application.context="/your/prefix" 

प्ले से 2.4 इस संपत्ति को play.http.context कहा जाता है (गमन द्वारा टिप्पणी से लिया गया)।

+1

स्वीकार्य उत्तर से यह बहुत आसान है (जो काम नहीं कर सकता है प्ले 2.0 में) – Nathan

+0

यह सही उत्तर है –

+3

बस Google से आने वाले अन्य लोगों को जाने के लिए, प्ले 2.4 में इसे बदलकर 'play.http.context' में बदल दिया गया है (https://www.playframework.com/documentation/2.4 देखें। एक्स/Migration24) – Gman

संबंधित मुद्दे