Non c'è molta documentazione sul motore di template di Play 2.0.Come definire un tag con Play 2.0?
Come si crea un tag utilizzando il modello Scala?
Non c'è molta documentazione sul motore di template di Play 2.0.Come definire un tag con Play 2.0?
Come si crea un tag utilizzando il modello Scala?
Il motore di template nel gioco 2.0 proviene direttamente dal modulo di riproduzione 1.0 scala. Se ti stai ancora chiedendo quali vantaggi offre un linguaggio funzionale come Scala, questa è certamente una delle aree in cui brilla.
Dimostrazione:
Nella sintassi scala un tag non è altro che una chiamata di funzione. ciò che è interessante, è che i frammenti html sono considerati come funzioni stesse, consentendo i più potenti costrutti di sostituzione.
Definiamo una pagina html chiamata mytag.scala.html
di file: apps/vista/mytags/mytag.scala.html
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
Il tag prende superiore a 3 parametri in 2 distinti gruppi di parametri:
Ora vediamo come possiamo utilizzare questo tag:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
Prima di poter utilizzare un tag (o funzione), abbiamo bisogno di lasciare Giocare sapere dove si trova: questo è lo scopo della importazione dichiarazione. Si noti che la posizione (il percorso) del file di tag è irrilevante fintanto che si modifica la posizione di importazione, proprio come con i pacchetti Java.
Segue la chiamata stessa, che è abbastanza semplice. Si noti tuttavia che stiamo passando un tag html parametrizzato al tag.
Per ulteriori dettagli, è possibile trovare la documentazione modello di scala a questo URL
Riproduci 2.0 finirà per venire con la propria documentazione.
Risposta completamente inutile ma solo per allenare la mia scala. Questo lavoro non dovrebbe essere più breve mentre si mantiene chiaro?
@(level:String = "error", index: Int)(body: (String) => Html)
<p class="@level" index="@index">
@body(
@level match {
case "success" => "green"
case "warning" => "orange"
case "error" => "red"
}
)
</p>
viene visualizzato un errore del compilatore quando ho utilizzato il primo esempio. Elimina le "visualizzazioni". nell'importazione risolto il problema
utilizzare mytags @import._ esempio
completa (http://www.playframework.com/documentation/2.1.1/JavaTemplateUseCases):
Let’s write a simple views/tags/notice.scala.html tag that displays an HTML notice: @(level: String = "error")(body: (String) => Html) @level match { case "success" => { <p class="success"> @body("green") </p> } case "warning" => { <p class="warning"> @body("orange") </p> } case "error" => { <p class="error"> @body("red") </p> } }
E ora lo si può usare da un altro modello:
@import tags._
@notice ("errore") {color => Oops, qualcosa non va}
Sinceramente non lo so, non è ancora un esperto di scala. sembra una buona domanda su SO. –
Dovrei riprovare subito a giocare a 2.0. L'ultima volta, è stato davvero troppo crudo per i miei esperimenti! Non sono ancora un esperto di Scala ma imparo molto ed è l'unico linguaggio finora che mi dà l'impressione che potrei definitivamente spegnere Java alla fine;) – mandubian
In questo caso, se il livello è qualcosa di diverso dal successo, avviso o errore, avrai un tag ap con quella classe css, che potrebbe non essere indenne. Nella risposta di @Olivier Refalo, verrà stampato solo un tag P se corrisponde a uno dei livelli di errore. – user3001