Y luego de un descanso seguimos aprendiendo play framework. Recuerden que nos habíamos quedado acá:
http://emanuelpeg.blogspot.com.ar/2013/02/primeros-pasos-con-play-part-4.html
Nos habíamos quedado en crear el modelo de Algo:
package models
case class Algo (id: Long, nombre: String, descripcion: String)
object Algo {
def all(): List[Algo] = Nil
def create(nombre: String, descripcion: String) {}
def delete(id: Long) {}
}
Bueno creamos la case class Algo que nos sirve de modelo y luego un Objeto que va a realizar las tareas de listar, crear y borrar. Por ahora es un Objeto Dummy, onda que no hace nada pero luego vamos a implementar su interacción con la base de datos.
Para el que no este familiarizado con case class de scala puede leer esto:
http://www.scala-lang.org/node/107.
Ahora vamos a hacer la pagina principal:
@(algos: List[Algo], algoForm: Form[String])
@import helper._
@main("Todo list") {
<h1>@algos.size algo(s)</h1>
<ul>
@algos.map { algo =>
<li>
@algo.nombre
@form(routes.Algo.delete(algo.id)) {
<input type="submit" value="Delete">
}
</li>
}
</ul>
<h2>Add a new Algo</h2>
@form(routes.Algo.newAlgo) {
@inputText(algoForm("Nombre"))
@inputText(algoForm("Descripcion"))
<input type="submit" value="Create">
}
}
Vamos a explicar un poquito, al principio declaramos una lista de Algo y un formulario; luego imprimimos cuantos algos hay y generamos un listado; permitiendo que se puedan eleminar; y para finalizar permitimos crear nuevos algos.
También importamos helper._ el cual nos ayuda a la creación de formularios. Normalmente un formulario crea un <form> de html.
Ahora vamos al controller a decirle que muestre nuestra nueva pagina:
package controllers
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
object Algo extends Controller {
def index = Action {
val algoForm = Form(
"Nombre" -> nonEmptyText)
Ok(views.html.algoIndex(models.Algo.all() ,algoForm))
}
def newAlgo = TODO
def delete(id: Long) = TODO
}
Como vemos hemos hecho un formulario y le dijimos que nombre es requerido. Además que vaya a nuestra pagina.
Si vamos a
http://localhost:9000/algo veremos la siguiente pagina:
Hermosa salvo porque todavía no guarda en la base de datos... Pero esto será en el próximo post!