Play2.xのScala Templatesを使ったController&View(scala初心者)
conf/routesに、route設定を書く
GET /show controllers.TemplateController.show()
app/controllers/TemplateController.scalaを作成
package controllers
import play.api._
import play.api.mvc._
object TemplateController extends Controller {
def show = Action {
//果物名一覧
val list = List[String]("lemon", "mikan", "budou", "ringo")
//表示
Ok(views.html.show("Hello Scala Templates!",list))
}
}
app/views/show.scala.htmlを作成
//views.html.showの第一引数を@messageに、第二引数を@userListに
@(message:String,userList:List[String])
@main("show scala templates") {
<h1>@message</h1>
<ul>
@for(user <- userList) {
<li><p>@user</p></li>
}
</ul>
}
ここには、html,head,bodyは書かない。
play run
ブラウザで、以下のURLを開くと http://localhost:9000/show
Hello Scala Templates! lemon mikan budou ringo
と表示されます。 ソースコードを見てみると
<!DOCTYPE html>
<html>
<head>
<title>show scala templates</title>
<link rel="stylesheet" media="screen" href="/assets/stylesheets/main.css">
<link rel="shortcut icon" type="image/png" href="/assets/images/favicon.png">
<script src="/assets/javascripts/jquery-1.9.0.min.js" type="text/javascript"></script>
</head>
<body>
<h1>Hello Scala Templates!あ</h1>
<ul>
<li><p>lemon</p></li>
<li><p>mikan</p></li>
<li><p>budou</p></li>
<li><p>ringo</p></li>
</ul>
</body>
</html>
さっき書かなかった、html,head,bodyが これは app/views/main.scala.html内の
@content
にさっき作ったshow.scala.htmlの内容が展開されているからである。
他の言語の、フレームワークでもレイアウトファイル、テンプレートファイルと同じで main.scala.htmlをレイアウトファイル show.scala.htmlをテンプレートファイルとしたからです。