4

モイン、

play フレームワークの助けを借りてアプリを作成しました。これで、すべてのリクエストに使用するメイン テンプレートができました。このテンプレートには、ログイン フォームとログアウト メソッドへのリンクがあります。もちろん、ログアウトしているユーザーだけがログイン フォームなどを表示する必要があります。すべてのアクションを2回書かずにそれを実装する方法を知っている人はいますか?

北ドイツからありがとう!

4

1 に答える 1

11

私はあなたに役立つかもしれない行動を確保することについて要点を述べました。

SecureableControllerトレイトを拡張するコントローラーには次のものがあります。

implicit def user(implicit request : RequestHeader) : Option[User] = {  
  // substitute in your own user lookup mechanism here
  session.get("email").flatMap(User.findOne(_))
}

これにより、次のように指定することで、そのコントローラーからルーティングするビューの暗黙的なパラメーターを介してユーザーを取得できます。

@ ... other parameters ... (implicit user: Option[User] = None)

あなたの見解のそれぞれに。(その特定の定型文を回避する方法はまだありません。)

次に、メニューに次のようなものがあります。

   @user match {
      case Some(u) => {
        @defining(u.givenName + " " + u.familyName) { profileName =>
      <li class="dropdown"><a href="#user" class="dropdown-toggle" data-toggle="dropdown">@profileName<b class="caret"></b></a>
        }
        <ul class="dropdown-menu">
          @defining("/profile/"+u.email) { profileUrl =>
          <li><a href="@profileUrl">Profile</a></li>                
          <li><a href="@routes.Users.logout">Logout</a></li>                
          }
        </ul>      
      </li>      
      }
      case None => {
      <li>            
        <a href="@routes.Users.login">Login</a>
      </li>
      }
    }       

ログインしたユーザーのプロファイルページとログアウトにリンクするブートストラップドロップダウンが表示され、ログインしたユーザーがいない場合はログインリンクが表示されます。

于 2012-07-24T21:19:09.020 に答える