Deadbolt:仅显示当前登录用户的模板部分

时间:2013-11-14 13:30:25

标签: scala session playframework playframework-2.2 deadbolt

在我的系统中,每个用户都有自己的公开个人资料。我想展示一个"编辑"按钮仅在当前登录用户的配置文件页面上。 现在我通过使用此代码

来完成此操作
  @subjectPresent() {
    @if(userProfile == userLogged){
      <button>Edit</button>
    }
  }

其中userProfile是当前页面的所有者用户,userLogged是实际登录用户。

考虑到我必须多次检查,Deadbolt或Scala是否有更好(更干净)的方法呢?

2 个答案:

答案 0 :(得分:1)

正如大卫建议的那样,你可以将它包装在你自己的标签中。标签只是功能,看起来像其他视图(事实上,它们是其他视图)。

您可以尝试类似

的内容
@(userProfile: User, userLogged: User)(body: => Html)

@subjectPresent() {
  @if(userProfile == userLogged){
    @body
  }
}

并将其保存在名为foo.scala.html

的文件中

然后您可以将其与

一起使用
@foo(userProfile, userLogged) {
  <button>Edit</button>
}

您需要在必要时使用正确的类型声明或导入,例如:用户,导入标签等。这取决于项目的结构。

答案 1 :(得分:0)

您最终需要在上面的代码片段中进行相同的逻辑检查,这样您就可以创建一个新的“标记”(另一个视图),它接受“当前”用户并进行两项测试。你也可能想要在控制器端创建类似的东西,比如SubjectPresentAction的扩展。