case class MyFormData
(name:String, mail:String)
@helper.inputText(myForm("name"))
@helper.inputText(myForm("mail"))Formの「name」と「mail」を引数に指定してinputTextを呼び出していました。このように、「name」「mail」という名前でフォームに値が保管されることがわかります。MyFormDataクラスにも、それに合わせた名前で変数が用意されるのです。val form1 = Form(Formインスタンスでは、引数に「mapping(……)」というものを用意しました。このmappingでは、それぞれの保管する値の名前とその種類が()に記述されています。"name" -> text, "mail" -> text というように書かれていますね。
mapping(
"name" -> text,
"mail" -> text
)(MyFormData.apply)(MyFormData.unapply)
)
def sendform = Action { implicit request =>
var myForm = form1.bindFromRequest
val data: MyFormData = myForm.get
val title = "サンプルページ"
val msg = "名前:" + data.name + ", メール:" + data.mail
Ok(views.html.index(title, msg, myForm))
}ここでは、フォーム送信した先のsendformアクションメソッドをチェックしておきましょう。まず、bindFromRequestを使ってform1にリクエストの値を組み込んだものを変数myFormに代入しています。そして、getで関連付けてあるMyFormDataインスタンスを取り出して変数dataに代入します。これで、フォームとそこに書かれた値のそれぞれがオブジェクトとして取り出せたわけです。myForm: Form[Application.MyFormData]myFormは、Formインスタンス(form1)に値を組み込んだものです。[]には、Application.MyFormDataという指定がされています。これで、MyFormDataクラスで値を保管するFormがmyFormに代入される、ということを示しているのですね。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package controllers
import play.api._
import play.api.mvc._
import play.api.data.Form
import play.api.data.Forms._
object Application extends Controller {
case class MyFormData(name:String, mail:String)
val form1 = Form(
mapping(
"name" -> text,
"mail" -> text
)(MyFormData.apply)(MyFormData.unapply)
)
def index = Action {
val title = "サンプルページ"
val msg = "サンプルのページです。"
Ok(views.html.index(title, msg, form1))
}
def sendform = Action { implicit request =>
var myForm = form1.bindFromRequest
val data: MyFormData = myForm.get
val title = "サンプルページ"
val msg = "名前:" + data.name + ", メール:" + data.mail
Ok(views.html.index(title, msg, myForm))
}
}
| << 前へ | 次へ >> |