Views
See the Views section for an overview.
InvirtView
Base class for view models that associate a Pebble template with the rendering object.
- Example
- Declaration
data class ListUsersResponse(
val users: List<User>
) : InvirtView("users/list")
open class InvirtView(val template: String)
InvirtView.ok / InvirtView.status
Renders an InvirtView with status 200 or a caller-supplied status.
- Example
- Declaration
"/users" GET { request ->
ListUsersResponse(users).ok(request)
}
"/users" POST { request ->
CreateUserResponse(user).status(request, Status.ACCEPTED)
}
fun InvirtView.ok(request: Request): Response
fun InvirtView.status(request: Request, status: Status): Response
renderTemplate
Renders a template directly, optionally with a model object, without a backing InvirtView.
- Example
- Declaration
"/" GET { request -> renderTemplate(request, "index") }
"/profile" GET { request -> renderTemplate(request, "profile", mapOf("name" to "John")) }
fun renderTemplate(request: Request, template: String, model: Any? = null): Response
errorResponse
Renders a template with validation errors and an optional model. Returns
Status.UNPROCESSABLE_ENTITY by default.
- Example
- Declaration
error { form, errors ->
errorResponse(request, errors, "signup", form)
}
// One-off field errors without a backing model
errorResponse(request, "signup", "email" to "Email already in use")
fun errorResponse(
request: Request,
errors: ValidationErrors,
template: String,
model: Any? = null,
status: Status = Status.UNPROCESSABLE_ENTITY
): Response
fun errorResponse(
request: Request,
template: String,
vararg errors: Pair<String, String>
): Response
InvirtView.asErrorResponse
Convenience that treats an InvirtView instance as both the model and the template name when rendering
an error response.
- Declaration
fun InvirtView.asErrorResponse(
request: Request,
errors: ValidationErrors,
status: Status = Status.UNPROCESSABLE_ENTITY
): Response