Comment passer des données en flash du contrôleur pour afficher avec le Jeu! cadre

J'ai été labourer par le biais du jeu! jusqu'à présent, avec quelques bosses dans la courbe d'apprentissage. Droit maintenant, je suis incapable de passer de données en flash du contrôleur à la vue, au premier abord, je pensais être une tâche triviale, ou du moins il devrait l'être.

Voici ce que j'ai en ce moment:

J'ai une page principale: application.scala.html

J'ai une vue qui va dans la mise en page: login.scala.html

et j'ai mon contrôleur et méthode: UX.authenticate() - je veux ce à fournir des données en flash pour les visualiser, en fonction du résultat de la tentative de connexion (réussite vs échec)

C'est mon code dans ma méthode de contrôleur:

def authenticate = Action { implicit request =>
        val (email, password) = User.login.bindFromRequest.get
        //Validation
        //-- Make sure nothing is empty
        if(email.isEmpty || password.isEmpty) {
            flash + ("message" -> "Fields cannot be empty") + ("state" -> "error")
            Redirect(routes.UX.login())
        }
        //-- Make sure email address entered is a service email
        val domain = email.split("@")
        if(domain(1) != "example.com" || !"""(\w+)@([\w\.]+)""".r.unapplySeq(email).isDefined) {
            flash + ("message" -> "You are not permitted to access this service") + ("state" -> "error")
            Redirect(routes.UX.login())
        } else {
            //Attempt login
            if(AuthHelper.login(email, password)) {
                //Login successful
                val user = User.findByEmail(email)
                flash + ("message" -> "Login successful") + ("state" -> "success")
                Redirect(routes.UX.manager()).withSession(
                  session + (
                    "user"      -> user.id.toString
                  )
                )
            } else {
                //Bad login
                flash + ("message" -> "Login failed") + ("state" -> "error")
                Redirect(routes.UX.login())
            }
        }
    }

Dans ma connexion, j'ai un paramètre: @(implicit flash: Flash)

Lorsque j'essaie d'utiliser le flash rien ne s'affiche à l'aide de @flash.get("message")

Idéalement, j'aimerais souhaitez définir @(implicit flash: Flash) dans la mise en page, de sorte que je peux flash de données à partir de n'importe quel contrôleur et il va rejoindre mon point de vue. Mais à chaque fois que je fais ça, la vue login jette les erreurs.

Dans mon login vue de droite maintenant j'ai ceci:

def login = Action { implicit request =>
        flash + ("message" -> "test")
        Ok(views.html.ux.login(flash))
    }

Quel est le moyen idéal de le passage éclair de données à la vue, et il y a des exemples partout dans le monde? Les exemples sur le Jeu! cadre docs ne pas aider que ce soit et sont limités à deux exemples qui montrent aucune interaction avec le point de vue à tous (trouvé ici en bas: http://www.playframework.com/documentation/2.0/ScalaSessionFlash).

Est-il une alternative plus facile? Ce que je fais mal? Comment puis-je passer de flash directement les données à ma disposition?

OriginalL'auteur Ron | 2013-03-20