first commit
This commit is contained in:
49
.g8/form/app/controllers/$model__Camel$Controller.scala
Normal file
49
.g8/form/app/controllers/$model__Camel$Controller.scala
Normal file
@@ -0,0 +1,49 @@
|
||||
package controllers
|
||||
|
||||
import javax.inject._
|
||||
import play.api.mvc._
|
||||
|
||||
import play.api.data._
|
||||
import play.api.data.Forms._
|
||||
|
||||
case class $model;format="Camel"$Data(name: String, age: Int)
|
||||
object $model;format="Camel"$Data {
|
||||
def unapply(data: $model;format="Camel"$Data): Option[(String, Int)] = Some((data.name, data.age))
|
||||
}
|
||||
|
||||
// NOTE: Add the following to conf/routes to enable compilation of this class:
|
||||
/*
|
||||
GET /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Get()
|
||||
POST /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Post()
|
||||
*/
|
||||
|
||||
/**
|
||||
* $model;format="Camel"$ form controller for Play Scala
|
||||
*/
|
||||
class $model;format="Camel"$Controller @Inject()(mcc: MessagesControllerComponents) extends MessagesAbstractController(mcc) {
|
||||
|
||||
val $model;format="camel"$Form = Form(
|
||||
mapping(
|
||||
"name" -> text,
|
||||
"age" -> number
|
||||
)($model;format="Camel"$Data.apply)($model;format="Camel"$Data.unapply)
|
||||
)
|
||||
|
||||
def $model;format="camel"$Get() = Action { implicit request: MessagesRequest[AnyContent] =>
|
||||
Ok(views.html.$model;format="camel"$.form($model;format="camel"$Form))
|
||||
}
|
||||
|
||||
def $model;format="camel"$Post() = Action { implicit request: MessagesRequest[AnyContent] =>
|
||||
$model;format="camel"$Form.bindFromRequest().fold(
|
||||
formWithErrors => {
|
||||
// binding failure, you retrieve the form containing errors:
|
||||
BadRequest(views.html.$model;format="camel"$.form(formWithErrors))
|
||||
},
|
||||
$model;format="camel"$Data => {
|
||||
/* binding success, you get the actual value. */
|
||||
/* flashing uses a short lived cookie */
|
||||
Redirect(routes.$model;format="Camel"$Controller.$model;format="camel"$Get()).flashing("success" -> ("Successful " + $model;format="camel"$Data.toString))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
12
.g8/form/app/views/$model__camel$/form.scala.html
Normal file
12
.g8/form/app/views/$model__camel$/form.scala.html
Normal file
@@ -0,0 +1,12 @@
|
||||
@($model;format="camel"$Form: Form[$model;format="Camel"$Data])(implicit request: MessagesRequestHeader)
|
||||
|
||||
<h1>$model;format="camel"$ form</h1>
|
||||
|
||||
@request.flash.get("success").getOrElse("")
|
||||
|
||||
@helper.form(action = routes.$model;format="Camel"$Controller.$model;format="camel"$Post()) {
|
||||
@helper.CSRF.formField
|
||||
@helper.inputText($model;format="camel"$Form("name"))
|
||||
@helper.inputText($model;format="camel"$Form("age"))
|
||||
<input type="submit" value="submit"/>
|
||||
}
|
||||
12
.g8/form/conf/routes
Normal file
12
.g8/form/conf/routes
Normal file
@@ -0,0 +1,12 @@
|
||||
# Routes
|
||||
# This file defines all application routes (Higher priority routes first)
|
||||
# https://www.playframework.com/documentation/latest/ScalaRouting
|
||||
# ~~~~
|
||||
|
||||
# An example controller showing a sample home page
|
||||
GET / controllers.HomeController.index()
|
||||
GET /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Get()
|
||||
POST /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Post()
|
||||
|
||||
# Map static resources from the /public folder to the /assets URL path
|
||||
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
|
||||
2
.g8/form/default.properties
Normal file
2
.g8/form/default.properties
Normal file
@@ -0,0 +1,2 @@
|
||||
description = Generates a Controller with form handling
|
||||
model = user
|
||||
71
.g8/form/test/controllers/$model__Camel$ControllerSpec.scala
Normal file
71
.g8/form/test/controllers/$model__Camel$ControllerSpec.scala
Normal file
@@ -0,0 +1,71 @@
|
||||
package controllers
|
||||
|
||||
import play.api.mvc._
|
||||
import play.api.i18n._
|
||||
import org.scalatestplus.play._
|
||||
import org.scalatestplus.play.guice.GuiceOneAppPerTest
|
||||
import play.api.http.FileMimeTypes
|
||||
import play.api.test._
|
||||
import play.api.test.Helpers._
|
||||
import play.api.test.CSRFTokenHelper._
|
||||
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
/**
|
||||
* $model;format="Camel"$ form controller specs
|
||||
*/
|
||||
class $model;format="Camel"$ControllerSpec extends PlaySpec with GuiceOneAppPerTest with Injecting {
|
||||
|
||||
// Provide stubs for components based off Helpers.stubControllerComponents()
|
||||
class StubComponents(cc:ControllerComponents = stubControllerComponents()) extends MessagesControllerComponents {
|
||||
override val parsers: PlayBodyParsers = cc.parsers
|
||||
override val messagesApi: MessagesApi = cc.messagesApi
|
||||
override val langs: Langs = cc.langs
|
||||
override val fileMimeTypes: FileMimeTypes = cc.fileMimeTypes
|
||||
override val executionContext: ExecutionContext = cc.executionContext
|
||||
override val actionBuilder: ActionBuilder[Request, AnyContent] = cc.actionBuilder
|
||||
override val messagesActionBuilder: MessagesActionBuilder = new DefaultMessagesActionBuilderImpl(parsers.default, messagesApi)(executionContext)
|
||||
}
|
||||
|
||||
"$model;format="Camel"$Controller GET" should {
|
||||
|
||||
"render the index page from a new instance of controller" in {
|
||||
val controller = new $model;format="Camel"$Controller(new StubComponents())
|
||||
val request = FakeRequest().withCSRFToken
|
||||
val home = controller.$model;format="camel"$Get().apply(request)
|
||||
|
||||
status(home) mustBe OK
|
||||
contentType(home) mustBe Some("text/html")
|
||||
}
|
||||
|
||||
"render the index page from the application" in {
|
||||
val controller = inject[$model;format="Camel"$Controller]
|
||||
val request = FakeRequest().withCSRFToken
|
||||
val home = controller.$model;format="camel"$Get().apply(request)
|
||||
|
||||
status(home) mustBe OK
|
||||
contentType(home) mustBe Some("text/html")
|
||||
}
|
||||
|
||||
"render the index page from the router" in {
|
||||
val request = CSRFTokenHelper.addCSRFToken(FakeRequest(GET, "/$model;format="camel"$"))
|
||||
val home = route(app, request).get
|
||||
|
||||
status(home) mustBe OK
|
||||
contentType(home) mustBe Some("text/html")
|
||||
}
|
||||
}
|
||||
|
||||
"$model;format="Camel"$Controller POST" should {
|
||||
"process form" in {
|
||||
val request = {
|
||||
FakeRequest(POST, "/$model;format="camel"$")
|
||||
.withFormUrlEncodedBody("name" -> "play", "age" -> "4")
|
||||
}
|
||||
val home = route(app, request).get
|
||||
|
||||
status(home) mustBe SEE_OTHER
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user