Język szablonów programu Play Framework 2 jest całkiem niezły. Jednak, chociaż jest "inspirowany" językiem firmy Razor firmy Microsoft, jedna ważna decyzja projektowa jest inna: jak "uciekać z powrotem" do HTML. Razor szuka tagów w stylu HTML, a Play 2 używa jakiejś heurystyki.Jak wywołać szablon akceptujący zmienną liczbę argumentów w Play Framework 2
Próbuję napisać szablon, który zajmuje wiele "sekcji" HTML i generuje stronę z nagłówkami i spisem treści. My „structuredpage.scala.html” wygląda następująco:
@(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>
}
}
Zauważ, że jego drugi parametr jest liczba zmienna odcinków. Nie wydaje się, aby , a nie było to nazywanie tego w języku szablonowania Play.
I utworzeniu funkcji pomocnika nazwie Common.section
który wygląda tak:
def section(title: String)(content: Html) = title -> content;
Próbowałem to:
@()
@import views.Common.section
@structuredpage("Dashboard")(
section("Latest Requests") {
<p>Blah</p>
},
section("Your Details") {
<p>Blah blah</p>
}
)
... co daje type mismatch; found : scala.xml.Elem required: play.api.templates.Html
na linii 5, tj <p>Blah</p>
jest interpretowane jako Scala, a nie jako dokument HTML szablonu.
I tak:
@()
@import views.Common.section
@structuredpage("Dashboard"){
@section("Latest Requests") {
<p>Blah</p>
},
@section("Your Details") {
<p>Blah blah</p>
}
}
... co daje type mismatch; found : play.api.templates.Html required: (String, play.api.templates.Html)
na linii 3, to znaczy cała zewnętrzna blok CURLEY-klamra jest interpretowany jako szablon dokumentu HTML, nie jako kod Scala!
denerwująco nie wydają się być ogromnie różni się od niektórych próbek kodu w oficjalnej dokumentacji play 2, na przykład: http://www.playframework.org/documentation/2.0/ScalaTemplateUseCases
pomysłów? Używam Odtwórz Framework 2.0.4
co to za błąd kompilacji można dostać? –
Dodałem błędy kompilatora i moją interpretację ich na pytanie. Istotą jest to, że interpretuje on za dużo lub za mało szablonu jako kodu Scala. – andrewf