val datas = Mydata.getAllこれで取得したものをビュー側でテーブルに出力しています。以下の部分ですね。
@for(data:Mydata <- datas){
<tr>
<td>@data.name</td>
<td>@data.mail</td>
<td>@data.tel</td>
</tr>
}変数datasから順にMydataを取り出し、その値をテーブルとして書き出しています。getAllではas(Mydata.data)によりMydataインスタンスの形で値を取り出すようにしていましたから、こんな具合にコレクションの繰り返し処理で簡単にレコードを処理していくことができます。var myForm = form1.bindFromRequestFormの使い方は前回フォームヘルパーのところで説明しました。bindFromRequestにより送信されたフォーム情報を管理するFormインスタンス(変数form1)にフォームの値をバインドしたものをmyFormとして取得し、そこからgetでMydataを取り出してaddDataする、という流れになります。
val data: Mydata = myForm.get
val result = data.addData
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※Application.scala
package controllers
import models._
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 {
val form1 = Form(
mapping(
"name" -> text,
"mail" -> text,
"tel" -> text
)(Mydata.apply)(Mydata.unapply)
)
def index = Action {
val title = "サンプルページ"
val msg = "サンプルのページです。"
val datas = Mydata.getAll
Ok(views.html.index(title, msg, form1, datas))
}
def sendform = Action { implicit request =>
var myForm = form1.bindFromRequest
val data: Mydata = myForm.get
val result = data.addData
val title = "サンプルページ"
val msg = "名前:" + data.name + ", メール:" + data.mail
Ok(views.html.index(title, msg, myForm, null))
}
}
※index.scala.html
@(title: String, message: String, myForm: Form[Mydata], datas:List[Mydata])
@main(title) {
<h1>@title</h1>
<p>@message</p>
@helper.form(action = routes.Application.sendform) {
@helper.inputText(myForm("name"))
@helper.inputText(myForm("mail"))
@helper.inputText(myForm("tel"))
<input type="submit">
}
<hr>
@if(datas != null){
<p>Mydata list</p>
<table>
<tr>
<th>Name</th>
<th>Mail</th>
<th>Tel</th>
</tr>
@for(data:Mydata <- datas){
<tr>
<td>@data.name</td>
<td>@data.mail</td>
<td>@data.tel</td>
</tr>
}
</table>
}
}
| << 前へ | 次へ >> |