由于我必须处理现有数据库,因此我为自己的应用程序编写了自己的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
?或者它应该如何完成,我习惯于使用显式路由进行框架化。
答案 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)