2012-11-16 26 views
0

有時需要與所有視圖共享上下文變量,例如當前用戶或導航狀態。仔細查看文檔,我無法找到一種方法在所有視圖中共享模板引擎可訪問的全局上下文變量。在所有Play 2.0項目視圖中創建變量

這是由框架提供的,還是我最好明確地將這些變量傳遞給所有的視圖,也許是通過編寫一個在視圖需要這些全局變量的所有控制器中調用的包裝器方法?

+1

你應該看看這個:http://stackoverflow.com/questions/9629250/how-to-avoid-passing-parameters-everywhere-in-play2/9632085#9632085 –

回答

0

您可以使用該Session and Flash scopes

public static Result index() { 
    // session is good for storing session data such as for an example logged user's info 
    session("username", "John Doe"); 

    // flash is available only for next request (in this case for view rendering process) 
    flash("navId", "mainPage"); 

    return ok(index.render("ellou' World")); 
} 

index.scala.html

@(message: String) 

@main(message) { 
    @if(flash.get("navId")=="mainPage"){<h1>Great! You're on main page again</h1>} 
    <div>You're logged as @session.get("username")</div> 
} 
當然

對作爲個體的每一頁(樣navId)的數據,你也可以將它傳遞給視圖,其中您可以聲明除String以外的所需類型。

相關問題