2011-07-14 15 views

答えて

37

まあ、これは、文書化されていません私はこれが意図的に可能かどうかはわかりませんが、私はこの作業を行う方法を見つけました。 これは文書化されていない機能であるため、意図しないものである可能性があり、将来のバージョンのゲームで壊れる可能性があります。

ルートファイルで次の行を使用して、必要なものを達成することができます。

%{ if (play.mode.isDev()) }% 

私はアクション

public class Application extends Controller { 

    public static void index() { 
     render(); 
    } 

    public static void noDev() { 
     renderText("NoDev"); 
    } 
    public static void noProd() { 
     renderText("NoProd"); 
    } 
} 

のカップルとテストアプリケーションを作成し、私はその後、私のルートに次を追加しましたので、

# Home page 
GET /          Application.index 

# Ignore favicon requests 
GET  /favicon.ico       404 
# Map static resources from the /app/public folder to the /public path 
GET  /public/        staticDir:public 

%{ if (play.mode.isDev()) }% 
GET  /route1         Application.noDev 
GET  /route2         Application.noDev 
GET  /route3         Application.noDev 
*  /{controller}/{action}     {controller}.{action} 

%{ if (play.mode.isProd()) }% 
GET  /route4         Application.noProd 
GET  /route5         Application.noProd 
GET  /route6         Application.noProd 
*  /{controller}/{action}     {controller}.{action} 

ファイル、あなたがあれば、簡単なを使用していることがわかりますそのモードでのみルートの次のグループを実行します。 if文は、次のif文が見つかると終了します。

Devモードでroute4にアクセスしようとするとアクセスできなくなり、RouteNotFoundページにDevで定義されているルートが表示されます。

+0

でそれを実行し、生産を実行します。私はあなたがルートファイルで論理を行うことができるかどうか分かりませんでした。 –

+0

戦争の文脈の問題の解決策だったので、あなたはいくつかの論理をすることができると知っていましたが、どれくらいの論理が可能かは不明でした。だから私はそれを試して、それは働いた! – Codemwnci

+0

優秀... +1 – sojin

2

プレイフレームワークのバージョン2.xの場合:

  • あなたは別のroutesファイルを持っている必要がありますが、あなたのアプリケーション(元routesファイルの同じdirectoy)のルートにprod.routesを言うことができます、このファイルはそのルートのみが含まれていますあなたは生産のためにしたい。
  • prod.confのような別の.confファイルをconfフォルダ内に作成します。
  • 今、この新しいconfファイルには、以下が含まれている必要があります。

プレイフレームワーク2.4以降のために:

include "application.conf" 

play.http.router=prod.Routes 

か、新しい.confファイルパスパラメータなし:

-Dplay.http.router=prod.Routes

そして2.4より古い場合:

include "application.conf" 

application.router=prod.Routes 

としたときに、超甘いです-Dconfig.file=prod.conf

関連する問題