1

我开始为我自己的使用定制securesocial,并在定制我的视图期间遇到了一个问题 - 我试图在窗口顶部制作持久的工具栏模板,其中包含如下文本:

Welcome,
@if(user != null) {
  @user.firstName @user.lastName
} else {
  @Messages("Guest")
}

此工具栏在自定义主视图中生成:

@(title: String, user: securesocial.core.Identity = null)(content: Html)

从代码中调用(index.scala.html 示例):

@main("App test",user) 

我在尝试使用自定义视图时遇到问题 - 特别是passwordChange.scala.html. 这个视图是从securesocial(PasswordChange)提供的标准控制器调用的,然后将控制权传递给我自己的插件(MyViews它具有渲染视图和扩展的简单实现TemplatesPlugin),没有关于用户上下文的任何信息 - 所以即使用户已登录on,在密码更改期间,工具栏将显示“欢迎,访客”,并且相应的菜单将显示例如“登录”和“注册”,尽管用户在密码更改期间已登录。

任何人都可以为我提供将用户信息传递给我的自定义视图的解决方案(最好不重写内置控制器的securesocial)吗?

4

2 回答 2

0

看起来user是空的。你在你的代码中填充它吗?

您还需要在user模型中添加查询才能找到它。例如检查这个:

使用 Play 2 框架在 Scala 中创建模型类

于 2014-01-16T21:07:24.940 回答
0

该解决方案非常简单和时尚 - 我没有从 HTTP Context 对象(在这部分代码中不可用)填充用户,而是从隐式请求填充用户,然后将变量传递给我的自定义模板:

  def getPasswordChangePage[A](implicit request: SecuredRequest[A], form: Form[ChangeInfo]): Html = {
    val userName = request.user
    views.html.secure.Registration.passwordChange(request, userName, form)
  }

上面的代码是 MyViews.scala 代码的一部分。

于 2014-02-05T16:34:55.680 回答