@helper.select( フォームの指定 , options = Helper.options( 表示項目の指定 ),このように、()内に'multiple -> "multiple"と追記することで、multiple属性が設定され、複数の項目が選択できるようになります。が! 修正はこれだけではありません。フォームの指定で、名前の後に[]をつけなければいけません。例えば、前回作成したselectを複数対応にする場合、
'multiple -> "multiple")
myForm("country") → myForm("country[]")このように修正しておく必要があります。これを忘れると、値が正しく渡されなくなります。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
●index.scala.htmlのselectメソッド部分
@helper.select(
myForm("country[]"),
options = helper.options(("JP","Japan"),("US","U.S.A"),("UK","UK"),("etc","Other")),
'_default -> "-- Choose --",
'multiple -> "multiple",
'size -> "5",
'_help -> ""
)
●Application.scalaのソースコード
package controllers
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Form
import play.api.data.Forms._
object Application extends Controller {
case class MyFormData(
check:Boolean, gender:String, country:List[String])
val form1 = Form(
mapping(
"check" -> boolean,
"gender" -> text,
"country" -> list(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: " + data
Ok(views.html.index(title, msg, myForm))
}
}
| << 前へ |