2012-01-21 5 views
1

私は既存のデータベースで作業する必要があるため、自分のアプリケーションに自分のUserタイプを書いています。それは正常に動作しますが、私はそれのためのテンプレートの配線に問題があります。テンプレートで結ばれた自己製作のユーザーオブジェクト

私が使用したProtoUser traitは、多くの機能を提供しています。sitemapの方法でさえも。それには何も問題はありませんが、私はHiddenである必要があります。

私はその後自分自身のMenuインスタンスを作成しようとしました。彼らは正確にProtoUser形質に定義されているものと似ていますが、単に機能しません。

これは私の現在のサイトマップです。完全なコードは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

lift frameworkProtoUsernet.liftweb.protoのメニュー項目が定義されているかどうかを確認してください。

あなたUserクラスでは、例えば、これらのメニュー項目を無効にすることができます

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

または完全にそれを無効にする:あなたのBoot書き込みで次に

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

のようなもの:

def sitemap() = SiteMap(
    Menu("Home")/"index" >> Hidden >> User.AddUserMenusAfter) 
関連する問題