Escuelita de Scala - Parte 3a - Play MVC Views
Escuelita de Scala
Los views en Play Framework son similar a los usados por ASP.NET Razor.
Para ejecutar la vista en el controlador, se llama directamente a la vista.
En views/index.scala.html al inicio anotamos los argumentos que son aceptados por la vista. En esencia, la vista funciona como una función de Scala.
@(message: String)
<h1>@message</h1>
Tambien existen otros comandos y similar a ASP.NET Razor, usamos la @ para denotar cualquier código ejecutable (ver Play Templates).
En la aplicación, usamos Twitter Bootstrap, y nuestra plantilla maestra (main.scala.html) y plantilla de index (index.scala.html), separamos los contenedores de contenido para que adapten la barra de navegación y la lateral de Bootstrap.
Main.scala.html
El HTML contiene un layout fluido similar a los disponibles por Bootstrap. Los CSS y JavaScript usan @routes.Assets.at para cargar los recursos según la definición de las rutas.
Como main es el template maestro, y queremos usar Bootstrap, hay 3 partes habilitadas en Main, las cuales son configuradas por cada implementación.
Barra de navegación
@navbar { @navbarContext }
Definen la navegación de la página, donde @navbar es un tag y @navbarContext es el HTML definido por cada página. Esta implementación podria ser más sencilla a nivel de client side script con Handlebars y Backbone, pero al definir en el server el contenido de la barra de navegación se controla mejor en caso tal se integre con un servidor de CMS como Sitecore.
@sidebar y @content definen los placeholders para la barra lateral y el contenido. Simplemente, cada página implementa su contenido especifico.
Index.scala.html
En Index.scala.html, las partes de @navbarContext, @sidebar y @content son implementadas. Para acceder al template maestro, ejecutamos main como una función, asignamos los valores y el ultimo, @content, por medio de un closure agregamos los valores HTML adicionales. Más adelante se implementa el uso de Backbone y Handlebars, y con un patrón single page, implementamos las diferentes vistas de la aplicación.