2012-05-06 20 views

Respuesta

10

En primer lugar no se crea una variable, sino un valor lo que significa que ha leído solamente.

En su ejemplo, ha creado un valor fullName al que se puede acceder dentro de las llaves.

@defining("Farmor") { fullName => 
    <div>Hello @fullName</div> 
} 

imprimirá Hola Farmor

Para definir un valor que es accesible a nivel mundial en su plantilla simplemente abrazar todo con sus llaves.

E.g.

@defining("Value") { formId => 
    @main("Title") { 
    @form(routes.Application.addPost, 'id -> formId) { 
     @inputText(name = "content", required = true) 
     <input type="submit" value="Create"> 
    } 
    } 
} 

En el ejemplo que se puede utilizar el valor formId anywere.

+10

feo, complicado! .... Tanto para todos los esfuerzos de velocidad/freemarker para hacer las vistas realmente limpias y amigables con los codificadores de HTML. Parece que ahora la moda es hacer que las vistas html sean un lío total * suspiro * – monzonj

+1

¡Estoy de acuerdo! No me gusta mucho esta sintaxis. – droope

2

Es fácil, abarcar su bloque con el código de la muestra, entonces se puede utilizar @fullName variable que tiene un valor:

user.firstName + " " + user.lastName 
9

Si no desea utilizar la sintaxis @defining puede definir una reusable block el cual será evaluado cada vez que lo use:

@fullName = @{ 
    user.firstName + " " + user.lastName 
} 

<div>Hello @fullName</div> 

con esta misma sintaxis también puede pasar argumentos al bloque: https://github.com/playframework/Play20/blob/master/samples/scala/computer-database/app/views/list.scala.html

+0

Excepto que un bloque reutilizable se volverá a ejecutar cada vez que se use, mientras que el valor del bloque de definición solo se computará una vez. – kdkeck

+0

Gracias, editado. – OlivierBlanvillain

Cuestiones relacionadas