2017年1月21日土曜日

Play Framework 2.5 で フォームを使って見る (scala)


Play Framework 2.5 で フォームを使ってみたときのメモ
入力して、その文字列の表示まで


イメージはこんな感じです



コントローラの記述

formsample.scala.html

package controllers
import javax.inject.{Inject, Singleton}
import play.api.data._
import play.api.data.Forms._
import play.api.i18n.{I18nSupport, MessagesApi}
import play.api.mvc.{Action, Controller}

case class UserData(name: String, age: Int)

@Singleton
class FormSample @Inject()(val messagesApi: MessagesApi) extends Controller with I18nSupport {

    val userForm = Form(
        mapping(
            "name" -> text,
            "age" -> number
        )(UserData.apply)(UserData.unapply)
    )

    def index = Action {
        Ok(views.html.formsample("名前と年齢を入力", userForm))
    }

    def submit = Action(parse.form(userForm)) { implicit request =>
        val userData = request.body
        val res = "text : " + userData.name + " number : " + userData.age
        Ok(views.html.formsample(res, userForm))
    }

}

ここのFormで別のものをインポートしてしまったため少しはまりました

Viewの記述

formsample.scala.html

@(message:String,userForm: Form[UserData])(implicit messages:Messages)
@import helper._




  
  フォームのサンプル



  

フォームのサンプル

@message

@helper.form(action = routes.FormSample.submit) { @inputText(userForm("name")) @inputText(userForm("age")) }

ルーティングを記述

routes

GET     /                           controllers.FormSample.index
POST    /                           controllers.FormSample.submit

参考

0 件のコメント:

コメントを投稿