Play Framework 2テンプレート言語はかなりいいです。しかし、それはMicrosoftのRazor言語に触発されていますが、重要な設計上の決定事項の1つは、HTMLへのエスケープ方法です。 RazorはHTMLスタイルのタグを探し、Play 2は何らかのヒューリスティックを使用します。Play Framework 2でargsの可変数を受け入れるテンプレートを呼び出す方法
私はHTMLの複数のセクションを取り、ヘッダーと目次を含むページを生成するテンプレートを作成しようとしています。その2番目のパラメータはセクションの可変数であることを
@(title: String)(sections: Pair[String,Html]*)
@main(title){
<nav class="page-links">
@makeTableOfContents(sections)
</nav>
@for(section <- sections){
<section id="@section._1">
<h2>@section._1</h2>
@section._2
</section>
}
}
注:私の「structuredpage.scala.html」は、このようになります。 ではなく、がPlayテンプレート言語でこれを呼び出す方法のようです。
私はこのようになりますCommon.section
と呼ばれるヘルパー関数作成しました:私はこれを試してみた
def section(title: String)(content: Html) = title -> content;
を:
@()
@import views.Common.section
@structuredpage("Dashboard")(
section("Latest Requests") {
<p>Blah</p>
},
section("Your Details") {
<p>Blah blah</p>
}
)
... 5行目、すなわち上type mismatch; found : scala.xml.Elem required: play.api.templates.Html
を与える、<p>Blah</p>
がありますテンプレート文書HTMLではなく、Scalaとして解釈されます。
そして、この:
@()
@import views.Common.section
@structuredpage("Dashboard"){
@section("Latest Requests") {
<p>Blah</p>
},
@section("Your Details") {
<p>Blah blah</p>
}
}
... 3行目type mismatch; found : play.api.templates.Html required: (String, play.api.templates.Html)
を与える、すなわち、全体の外側のカーリーブレースブロックは、テンプレートドキュメントのHTMLとして解釈され、ない Scalaのコードのように! http://www.playframework.org/documentation/2.0/ScalaTemplateUseCases
任意のアイデア:
イライラ彼らは例えば、公式プレイ2ドキュメントのいくつかのコードのサンプルよりも非常に異なるように見えるではないのですか? (AUXILIAR方法の必要はありません)私はこのマシンでは今、この権利をテストすることはできませんプレイフレームワーク2.0.4
あなたが得るコンパイルエラーは何ですか? –
コンパイラのエラーとその問題に対する私の解釈を追加しました。要点は、Scalaコードとしてテンプレートをあまりにも多すぎるか小さすぎると解釈しているということです。 – andrewf