2013-05-31 17 views
5

こんにちは私は初心者からスカラープレイフレームワークです。私は2つ以上の入力を持つフォームを作成することができません。私はそれをgoogledし、スカラプログラミング言語では誰も見つかりませんでした。スカラを使用してフォームに複数の入力を作成する方法に関するアイディアを教えてください。私はこれをしましたScalaでのフォーム再生フレームワーク

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

私は正しい方法に従っています。スカラープレイフレームワークを学ぶためのアイデアやリソースを教えてください。事前に感謝します

+0

場合によってはscala.textをインポートしていますか?それを削除し、@マットロボットの下の答えとして適切なインポートを追加すると、あなたの問題を解決するはずです。 – binshi

答えて

26

ここでは、Play 2.1.1の完全な(ただし単純な)フォームの例を示します。ビュー、コントローラ、ルートファイルを含む。私はあなたがmissing importsおよび/またはimplicit requestと思われます。どちらも理解できるだろう!

コントローラ(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)) 
    } 
} 

ビュー(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> 

および経路:

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

NB: HTMLビューの名前属性は、コントローラフォームの文字列リテラルと一致する必要があります。

希望があれば

+0

このタイプのフォーム(ケースクラスではなくタプル)を検証し、検証に失敗したときに構造体をテンプレートに戻す方法はありますか? – nfvindaloo

+0

はい!これは、「制約の定義」の[Play 2.xドキュメント](http://www.playframework.com/documentation/2.0/ScalaForms)に記載されています。たとえば、 '' firstname " - > nonEmptyText'などです。 –

+0

それをテンプレートにどのように渡すことができますか?テンプレートがジェネリック型を持たなければならないと文句を言いますが、タプルの場合にはidはしません! – nfvindaloo

0

フォームについて学ぶには、 https://www.playframework.com/documentation/2.1.1/ScalaFormsのプレイに関するドキュメントが最適です。プレイサンプルフォームのプロジェクトをご覧ください。

http://typesafe.com/activator/template/play-example-formフォームに関するこのアクティベータのサンプルプロジェクトでは、フォームに関するすべてのことが説明されています。

1)プレーコントローラでのフォームとデータのバインディング、検証について説明します。

2)約Optional parametersのフォームについて説明します。

3)なお、上記ケースクラスは、アドレス、OtherStuff及び性別がオプションであることを 通知に依存

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

例えばネストされたオブジェクトとの複合体の形態について説明します。サンプルプロジェクトでは、このような複雑なオブジェクトの依存関係を処理する方法について説明しています。

アクティベータはhttp://typesafe.com/get-startedからダウンロードしてください。次に、コマンドactivator uiを使用してブラウザのUIモードでアクティベータを起動し、検索にplay-example-formと入力してダウンロードします。ダウンロードした後、プロジェクトのルートフォルダに移動し、イーライプを使用する場合はactivator eclipse、Intellij Ideaの場合はactivator gen-ideaと入力します。

+0

'有効ではないコマンド:gen-idea' – 030

関連する問題