6

私はscalaでPlay2.0を学ぼうとしていますが、Play2.0のテンプレートシステムがどのように機能するかを完全には理解していないと思います。以前にplay1.2を使用したことがあり、#{include'views /blah.html'/}に相当するものを探しています。基本的に、すべてのページにレンダリングされるナビゲーションバーを作成したいと思います。

基本的にmain.scala.htmlにあります

@(title: String)(navbar: Html)(content: Html)

<!DOCTYPE html>

<html>
  <head>
    <title>@title</title>
    <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
    <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
  </head>
  <header>
    This is my header
  </header>
    <section class="navbar">@navbar</section>
    <section class="content">@content</section>
  <footer>
    This is my footer
  </footer>

そして私のindex.scala.htmlで:

@navbar = {  
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
}
@main("Home")(navbar){
  content
}

task.scala.html:

@(tasks: List[Task], taskForm: Form[String]) 
@import helper._
@main("Home") {
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
} {
  task code
}

このナビゲーションバーを含めるには、この方法ですべてのページでこれを繰り返す必要があるようです。このナビゲーションバーをすべてのページにハードコーディングする必要があります。すべてのページにナビゲーションバー全体を書かずにこれを行う方法はありますか?

また、以下を含むnavbar.scala.htmlファイルを作成してみました

<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>

ビューの下に保存し、それを使用してインポートし@import views.navbarますが、「ナビゲーションバーはビューのメンバーではありません」というエラーが表示されます。それが助けになるなら、私はこれをEclipse JavaEEIDEインディゴで書いています。

4

2 に答える 2

7

インポートせずに、単に呼び出します。

@navbar()
于 2012-05-16T20:07:35.997 に答える
0

他のビューテンプレートを別のビューテンプレートに含めるには、次のコマンドを使用して呼び出すだけです。@views.html.[location].[location].[location]()

ここで、[場所]はそのパスの内訳にすぎません。

例えば:

@views.html.users.interface()

パラメータを使用しない場合は、必ず「()」、つまりステートメントの最後に角かっこを入れてください。「()」がないと、「BaseScalaTemplate(play.api.templates ...)」のようなエラーメッセージが表示されます。

テンプレートにパラメータがある場合は、次のように、呼び出すときに必ずパラメータを含めてください。

@views.html.users.interface( "name" )
于 2014-06-24T19:21:48.407 に答える