自制用户对象,模板中的接线

时间:2012-01-21 19:00:16

标签: scala mongodb lift

由于我必须处理现有数据库,因此我为自己的应用程序编写了自己的User类型。它工作正常,但我在模板中连线时遇到了麻烦。

我使用的ProtoUser trait提供了很多功能,甚至是自己的sitemap方法。这个没有错,但我需要它Hidden

然后我尝试为他们制作我自己的Menu个实例。它们与ProtoUser特征中定义的完全相同,但它们根本不起作用。

这是我目前的SiteMap。完整代码在here

    val entries = List(
      Menu.i("Home") / "index" >> Hidden,
      Menu.i("Branches") / "branches",
      Menu.i("Ponies") / "ponies",
      Menu.i("Profile") / "profile" >> If(() => User.loggedIn_?, "You must be logged in"),

/*      Menu.i("Login") / "login" >> Hidden >> Template(() => User.wrapIt(User.login)) >> If(() => User.notLoggedIn_?, "Already logged in"),
        Menu.i("Logout") / "logout" >> Hidden >> Template(() => User.wrapIt(User.logout)) >> If(() => User.loggedIn_?, "You must be logged in"),
        Menu.i("Sign Up") / "signUp" >> Hidden  >> Template(() => User.wrapIt(User.signup)) >> If(() => User.notLoggedIn_?, "Already logged in"),*/

      Menu(Loc("Static", Link(List("static"), true, "/static/index"),
        "Static Content", Hidden))
    ) ::: User.sitemap

也许有人可以帮助我隐藏User.sitemap?或者它应该如何完成,我习惯于使用显式路由进行框架化。

1 个答案:

答案 0 :(得分:1)

检查定义菜单项的ProtoUser下的lift framework的课程net.liftweb.proto

User课程中,您可以覆盖这些菜单项,例如:

override protected def editUserMenuLocParams: List[LocParam[Unit]] =
  Hidden :: //hides it but still reachable
  Template(() => wrapIt(editFunc.map(_()) openOr edit)) ::
  testLogginIn ::
  Nil

或彻底停用它:

override def editUserMenuLoc: Box[Menu] = Empty //not reachable

然后在Boot写下类似的内容:

def sitemap() = SiteMap(
  Menu("Home") / "index" >> Hidden >> User.AddUserMenusAfter)