首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在主模板中获取当前登录用户

问在主模板中获取当前登录用户
EN

Stack Overflow用户
提问于 2013-11-22 15:29:57
回答 2查看 1.2K关注 0票数 0

我的play/scala项目中有几个模板。我想访问我的主模板中当前登录的用户。(这样我就可以将欢迎的‘用户名’文本放到所有模板的页面顶部,而不仅仅是“登录页面”)

我可以在我的主模板中放置一个参数:

代码语言:javascript
复制
@(user: User)

但是,我有几个模板引用了主模板,这些模板没有访问登录用户的权限。像关于,联系等的页面。

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

如果我将主模板中的参数" user“作为可选参数,那么无论如何都会出现问题,因为如果用户登录,我将在所有页面上使用登录用户数据。

我怎么能解决这个问题?

如果你需要更多的投入,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 17:49:14

您需要使用会话来存储标识用户的id,例如,使用用户电子邮件作为id,将从控制器中的任何操作中检索用户,在存储在会话中的id的基础上从db检索用户,并将“用户名”作为模板的选项,在没有登录用户的情况下使用选项,如下所示:

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

有关模板的示例,只需将用户名传递给主模板即可。

代码语言:javascript
复制
@(username:Option[String])
@main(username) {    
    // your content
}

主模板示例,如果定义了用户名,则显示用户名

代码语言:javascript
复制
@(username: Option[String])(content: Html)
@if(username.isDefined) {
    <p> username.get</p>
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-22 16:39:00

如果我对你的理解是正确的,你需要这个:

控制器(Application.scala):

代码语言:javascript
复制
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):

代码语言:javascript
复制
@(user: String, parameter: String)

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

    <p>Hello, @user</p>

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20148523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档