使用Lift单独显示登录和注册菜单(分组)

时间:2012-01-10 14:37:20

标签: scala authentication registration

我在boot.scala中有以下菜单条目,以显示MetaMegaProtoUser中的“Home”,“About”和用户菜单:

val homeLink = new Link("index" :: Nil, false)
val homeMenu = Menu(Loc("homeHome", homeLink, "Home"))
val aboutLink = new Link("about" :: "index" :: Nil, false)
val aboutMenu = Menu(Loc("aboutHome", aboutLink, "About"))
val menus = homeMenu :: aboutMenu :: User.menus
LiftRules.setSiteMap(SiteMap(menus: _*))

在我的default.html中,我有以下内容来呈现菜单:

<lift:Menu.builder li_item:class="active" linkToSelf="true"></lift:Menu>

我希望将“Home”和“About”菜单分组到一个位置,将User.menus分组到我的页面中的单独位置(例如右上角显示为“Login | Sign up”。

1 个答案:

答案 0 :(得分:1)

您必须使用Menu.group代码段,该代码段允许您呈现特定LocGroup的菜单项。第7.5.2节中的网页Exploring Lift有一个很好的章节。

  

LocGroup允许您对菜单项进行分类......菜单项可能与一个或多个组相关联。只需添加一个LocGroup参数,其中包含组名称的字符串参数。

这意味着你可以做这样的事情,

val entries = (
    (Menu("Login") / "login" >> LocGroup("main")) ::
    (Menu("Logout") / "logout" >> LocGroup("user")) ::
    (Menu("Profile") / "profile" >> LocGroup("user", "main")) ::
    (Menu("Home") / "index" >> LocGroup("main")) :: Nil
)

通过

entries添加到Boot.scala
LiftRules.setSiteMap(SiteMap(entries: _*))

您只能使用

呈现LocGroup("user")的菜单项
<div id="userMenu">
    <div class="lift:Menu.group?group=user;a:class=userLink"></div>
</div>

请注意,在Menu.group调用中,您可以通过传递参数group=user来识别该组,并且也可以传递样式化参数,例如a:class=userLink

然后你就可以随心所欲地为#userMenu设计风格,把它放在任何地方等等,然后根据你的心愿去找那么多的团体!