2012-05-16 8 views
6

Sto cercando di imparare il gioco 2.0 con scala ma non penso di capire come funziona il sistema di template per il gioco 2.0. Ho usato il gioco 1.2 prima e sto cercando un equivalente al # {include 'views/blah.html' /}. In sostanza, voglio creare una barra di navigazione che sia resa su tutte le pagine.include file scala.html in gioco 2.0 scala

sostanzialmente in main.scala.html ho

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

e nel mio 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 
} 

Ora per includere questo na VBB sembra che devo ripetere questo in ogni pagina in questo modo avrei dovuto codice duro questa barra di navigazione in ogni pagina. C'è un modo per farlo senza scrivere l'intera barra di navigazione in ogni pagina?

Ho anche cercato di creare un file che contiene navbar.scala.html

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

e il salvataggio in vista/quindi importando che l'utilizzo di @import views.navbar ma poi ottengo un errore che indica 'barra di navigazione non è membro di punti di vista '. Sto scrivendo questo in Eclipse Java EE IDE indigo se questo aiuta.

risposta

7

Non importa, ma lo chiamano semplicemente:

@navbar() 
+0

quando uso '@navbar' visualizza questo: BaseScalaTemplate ([email protected]), al posto del navbar.scala.html reale – Darbs

+0

ci puoi mostrare il tuo codice? – Somatik

+0

Oh sì probabilmente è necessario aggiungere parens. Ho modificato la mia risposta. –

0

per includere eventuali altre viste modello in un altro modello di vista, si semplice chiamata utilizzando: @views.html.[location].[location].[location]()

Dove [percorso] è solo una pausa verso il basso del suo percorso.

ad esempio:

@views.html.users.interface() 

essere sicuri di mettere le "()", cioè le staffe alla fine della dichiarazione, se non prende alcun parametro. Senza "()" riceverai un messaggio di errore come questo: "BaseScalaTemplate (play.api.templates ...)"

Se il tuo modello ha parametri, assicurati di includerli quando lo chiami, come questo:

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