コントローラーとビューを使おう![Scala編] (1/5)
作成:2013-01-21 08:02
更新:2013-01-21 08:02
更新:2013-01-21 08:02
■Applicationとindexをカスタマイズする
では、実際にコントローラーとビューをカスタマイズして、オリジナルの表示を作ってみましょう。まずは、「コントローラーでビューテンプレートをレンダリングし表示する」という基本からです。
前回、説明したように、画面の表示は2つのビューテンプレートとして用意され、コントローラーのアクションクラスでそれをレンダリングし表示していました。このとき、必要に応じてテキストなどの値をテンプレート側に受け渡すことができました。この基本を行なってみましょう。
画面全体の基本的な構成となるmain.scala.htmlは、このまま変更する必要はないでしょう。Applicationコントローラーのindexと、index.scala.htmlだけ修正すればよいでしょう。また、デフォルトの表示では味気ないので、スタイルシートも用意しておくことにしましょう。「public」フォルダ内にある「stylesheets」フォルダの中に、「main.css」というスタイルシートファイルがあります。これが、main.scala.htmlで使用されるスタイルシートファイルです。これにスタイルシートの情報を記述しておけば、main.scala.htmlで適用されます。
下のリスト欄にそれぞれのファイルの修正を掲載しておきます。アクセスすると、「サンプルページ」というタイトルに「これはテストで作ったページです」とテキストが表示されます。実際に動作を確認しておきましょう。
ここでのポイントは、アクションメソッドからテンプレートへとどのように値が受け渡されていくか、です。まず、アクションの呼び出し部分を見てみましょう。
前回、説明したように、画面の表示は2つのビューテンプレートとして用意され、コントローラーのアクションクラスでそれをレンダリングし表示していました。このとき、必要に応じてテキストなどの値をテンプレート側に受け渡すことができました。この基本を行なってみましょう。
画面全体の基本的な構成となるmain.scala.htmlは、このまま変更する必要はないでしょう。Applicationコントローラーのindexと、index.scala.htmlだけ修正すればよいでしょう。また、デフォルトの表示では味気ないので、スタイルシートも用意しておくことにしましょう。「public」フォルダ内にある「stylesheets」フォルダの中に、「main.css」というスタイルシートファイルがあります。これが、main.scala.htmlで使用されるスタイルシートファイルです。これにスタイルシートの情報を記述しておけば、main.scala.htmlで適用されます。
下のリスト欄にそれぞれのファイルの修正を掲載しておきます。アクセスすると、「サンプルページ」というタイトルに「これはテストで作ったページです」とテキストが表示されます。実際に動作を確認しておきましょう。
■受け渡す変数の流れをチェックする
ここでのポイントは、アクションメソッドからテンプレートへとどのように値が受け渡されていくか、です。まず、アクションの呼び出し部分を見てみましょう。
Ok(views.html.index(title, msg))2つの変数が引数に渡されていることがわかりますね? では、これをindex.scala.html側でどう受け取っているか見てみましょう。
@(title: String, message: String)こうなっています。これで第1引数の値がtitleに、第2引数がmessageにそれぞれ渡されるのです。――いかがですか? 基本さえわかれば、コントローラーからビューへ必要な値を送るのはそれほど難しくないでしょう? 渡す値が増えたら、引数をどんどん追加すればいいのですから、意外と簡単です。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ●Application.scala package controllers import play.api. _ import play.api.mvc. _ object Application extends Controller { def index = Action { val title = "サンプルページ" val msg = "サンプルのページです。" Ok(views.html.index(title, msg)) } } ●index.scala.html @ (title : String, message : String) @ main(title) { @ main(message){ <h 1 > @ title</h 1 > <p> @ message</p> } } ●/public/stylesheets/main.css body { background-color = # FFCCCC; color : # 990000 ; font-size : 12 pt; } h 1 { color : # FFFFFF; background-color : # 990000 ; font-size : 18 pt; padding : 5 px; } |
※関連コンテンツ