0

我在play/scala项目中有几个模板。 我想访问我的主模板中当前登录的用户。 (这样我就可以把一个欢迎“用户名”文本页面的顶部上的所有模板不仅是“登录页”)获取主模板中当前登录的用户

我可以把一个参数在我的主模板:

@(user: User) 

但我有几个参考主模板的模板,它无法访问登录的用户。页面喜欢,联系等。

唯一可以访问登录用户的模板是“登录”页面。像用户配置文件,用户设置。从那里,我可以将登录的用户对象传递给主模板。但从其他页面我不能。

如果我让主模板参数“用户”作为一个可选的参数,它会出问题反正因为我将使用在用户数据记录的所有页面上,如果一个用户登录。

我怎么能解决这个问题?

如果您需要更多输入信息,请告诉我。

回答

1

你会需要使用会话来存储您可以用来识别用户的ID,例如使用用户电子邮件作为ID,来自控制器中的任何操作从数据库的基础trieve用户对这个ID存储在会话,并通过“用户名”作为一个选择模板,使用选项的情况下,有用户没有登录,是这样的:大约模板,只是通过

def about = Action { implicit request => 
    val username:Option[String] = User.findUserName(request.session.get(userSession)) 
    Ok(views.html.Applications.about(username) 
} 

例子用户名到主模板主模板显示用户名的

@(username:Option[String]) 
@main(username) {  
    // your content 
} 

例如,如果它被定义

@(username: Option[String])(content: Html) 
@if(username.isDefined) { 
    <p> username.get</p> 
} 
1

如果我理解正确的话,你需要这样的:

控制器(Application.scala):

object Application extends Controller { 

    def index = Action { 
     val user = "smth" //assign your user name here 
     val parameter = "another parameter" 
     Ok(views.html.yourTemplate(user, parameter)) 
    } 

} 

模板(yourTemplate.scala.html):

@(user: String, parameter: String) 

<!--main template wrapping yourTemplate--> 
@main("Welcome") { 

    <p>Hello, @user</p> 

} 
相关问题