2013-05-31 15 views
5

Hallo, ich bin ein Anfänger zu scala play Framework. Ich kann kein Formular mit zwei oder mehr Eingaben erstellen. Ich habe es gegoogelt und in scala keine Sprache gefunden. Bitte schlagen Sie mir eine Idee vor, wie Sie mehrere Eingaben in einem Formular mit Hilfe von Scala erstellen können. Ich tat diesFormen in Scala spielen Rahmen

val form = Form (tuple 
    (
"firstname"-> text, 
"lastname" -> text 
) 
) and to get the values val(fname,lname) = form.bindFromRequest.get 

bin ich folgenden richtigen Weg. Bitte schlagen Sie mir eine Idee oder eine Ressource vor, um Scala Play Framework zu lernen. Vielen Dank im Voraus

+0

Importieren Sie scala.text? Entfernen Sie es und fügen Sie die entsprechenden Importe wie folgt durch @Matt Roboter sollte Ihr Problem lösen. – binshi

Antwort

26

Hier ist ein komplettes (aber einfaches) Formularbeispiel für Play 2.1.1. Einschließen der Ansichts-, Controller- und Routen-Datei. Ich vermute, du warst missing imports und/oder ein implicit request. Beides wäre verständlich!

Die Steuerung (Application.scala):

package controllers 

import play.api._ 
import play.api.mvc._ 
import play.api.data._ 
import play.api.data.Forms._ 

object Application extends Controller { 
    val form = Form(
    tuple(
     "firstname" -> text, 
     "lastname" -> text 
    ) 
) 

    def index = Action { 
    Ok(views.html.index()) 
    } 

    def submit = Action { implicit request => 
    val (fname, lname) = form.bindFromRequest.get 
    Ok("Hi %s %s".format(fname, lname)) 
    } 
} 

Die Aussicht (index.scala.html):

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Form example</title> 
    </head> 
    <body> 
    <form method="post" autocomplete="on"> 
     First name:<input type="text" name="firstname"><br> 
     Last name: <input type="text" name="lastname"><br> 
     <input type="submit"> 
    </form> 
    </body> 
</html> 

Und die Routen:

GET /       controllers.Application.index 
POST /       controllers.Application.submit 

NB: Die Namensattribute in Ihrer HTML-Ansicht müssen mit den Zeichenfolgenliteralen in Ihrem Controller-Formular übereinstimmen.

Hoffe, dass hilft.

+0

Gibt es eine Möglichkeit, diesen Formulartyp (es handelt sich um ein Tupel und nicht um eine Fallklasse) zu validieren und die Struktur bei fehlgeschlagener Validierung an die Vorlage zurückzugeben? – nfvindaloo

+0

Ja! Es wird in der [Play 2.x Dokumentation] (http://www.playframework.com/documentation/2.0/ScalaForms) unter 'Einschränkungen definieren' beschrieben. Zum Beispiel: '" Vorname "-> NichtEmptyText'. –

+0

Wie kann ich das dann in eine Vorlage übertragen?Wann immer ich versuche, beschwert sich die Vorlage, dass Form einen generischen Typ haben muss, aber in dem Fall, der für ein Tupel gezeigt wird, tut id nicht? – nfvindaloo

0

Play Dokumentation ist der beste Weg, um über Formulare zu lernen https://www.playframework.com/documentation/2.1.1/ScalaForms Wenn Sie mehr dann wollen, werfen Sie bitte einen Blick auf Play-Beispiel-Formular-Projekt.

http://typesafe.com/activator/template/play-example-form Dieses Aktivator-Beispielprojekt zu Formularen erläutert alles über Formulare.

1) Es erklärt Formulare und Datenbindung, Validierung im Play-Controller.

2) Es erklärt über Optional parameters in den Formularen.

3) Es wird erläutert, über komplexe Formen mit verschachtelten Objekten zum Beispiel

 case class Student(name: String, age: Int, gender: Optional[Char] = None, 
               address: Address, other: OtherStuff) 

Die obige Fall Klasse ist abhängig von Adresse, OtherStuff und Mitteilung, dass das Geschlecht ist optional. Das Beispielprojekt erläutert den Umgang mit solchen komplexen Objektabhängigkeiten.

Bitte laden Sie den Aktivator von hier http://typesafe.com/get-started. Starten Sie dann den Aktivator im Browser-UI-Modus mit dem Befehl activator ui und geben Sie play-example-form in die Suche ein, um sie herunterzuladen. Nach dem Herunterladen gehen Sie in den Projektstammordner und geben activator eclipse ein, falls Sie Eclipse oder activator gen-idea verwenden, falls Sie Intellij Idea verwenden.

+0

'Kein gültiger Befehl: gen-idee' – 030

Verwandte Themen