2012-05-16 15 views
6

Ich versuche Play 2.0 mit Scala zu lernen, aber ich glaube nicht, ich verstehe ganz, wie das Template-System für Play 2.0 funktioniert. Ich habe play 1.2 vorher benutzt und ich suche nach einem Äquivalent zu # {include 'views/blah.html' /}. Ich möchte im Wesentlichen eine Navigationsleiste erstellen, die auf allen Seiten gerendert wird.gehören scala.html Dateien im Spiel 2.0 scala

Wesentlichen in main.scala.html ich habe

@(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> 

und in meinem index.scala.html:

@navbar = { 
<h1>Index</h1> 
<ul> 
    <li> 
     <a [email protected]>Tasks</a> 
    </li> 
</ul> 
} 
@main("Home")(navbar){ 
    content 
} 

in task.scala.html:

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

Jetzt, um diese na einzuschließen vbar es scheint, ich muss dies auf jeder seite auf diese weise wiederholen, ich müsste diese navbar auf jeder seite fest codieren. Gibt es eine Möglichkeit, dies ohne zu tun, ohne die ganze Navbar auf jeder Seite zu schreiben?

ich auch eine navbar.scala.html Datei versucht haben, zu schaffen, die

<h1>Index</h1> 
<ul> 
    <li> 
     <a [email protected]>Tasks</a> 
    </li> 
</ul> 

und Speichern unter Ansichten enthält/dann importieren, die @import views.navbar verwenden, aber dann bekomme ich einen Fehler, der besagt ‚navbar kein Mitglied der Ansichten ist ". Ich schreibe dies in Eclipse Java EE IDE Indigo, wenn das hilft.

Antwort

7

Dont importieren, aber es einfach anrufen:

@navbar() 
+0

wenn ich '@navbar' zeigt es dies: BaseScalaTemplate ([email protected]), anstelle der tatsächlichen navbar.scala.html – Darbs

+0

können Sie uns zeigen Sie Ihren Code? – Somatik

+0

Oh ja, du musst wahrscheinlich Parens hinzufügen. Ich habe meine Antwort bearbeitet. –

0

Um auch alle anderen Ansichten Vorlage in eine andere Ansichten Vorlage, Sie einfach es mit nennen: @views.html.[location].[location].[location]()

Wo [Ort] ist nur eine Pause runter von seinem Weg.

zum Beispiel:

@views.html.users.interface() 

Seien Sie sicher, die „()“, dh die Klammern am Ende der Anweisung zu setzen, wenn es keine Parameter nehmen. Ohne das "()" erhalten Sie eine Fehlermeldung wie diese: "BaseScalaTemplate (play.api.templates ...)"

Wenn Ihre Vorlage Parameter enthält, achten Sie darauf, sie zu nennen, wenn Sie sie aufrufen, wie dies:

@views.html.users.interface("name")