Forms
// app/controllers/session_controller/password_form.go
package sessioncontroller
type PasswordForm struct {
Username string `validate:"presence"`
Password string `validate:"presence"`
}
func (c *SessionsController) GenPasswordForm() (*PasswordForm, error) {
form := &PasswordForm{}
if err := c.Decode(form); err != nil {
return nil, err
}
return form, nil
}
// app/controllers/session_controller/sessioncontroller.go
package sessioncontroller
import (
"net/http"
"golazy.dev/lazycontroller"
"golazy.dev/lazyerrors"
)
func (c *SessionsController) New() error {
c.Set("form", &PasswordForm{})
return nil
}
func (c *SessionsController) Create(form *PasswordForm) error {
if err := lazyerrors.Validator(form); err != nil {
c.Status(http.StatusUnprocessableEntity)
c.Set("form", form)
c.Set("session_errors", err)
return c.Render("new")
}
return c.RedirectToRoute("home", lazycontroller.RedirectStatus(http.StatusSeeOther))
}
{{/* app/views/session/new.html.tpl */}}
{{ form_for .form . (form_action "/session") (form_file "session_fields") }}
{{/* app/views/session/_session_fields.html.tpl */}}
{{ text_field "Username" }}
{{ password_field "Password" }}
{{ range field_errors_for .session_errors "username" }}
<p>{{.}}</p>
{{ end }}
{{ submit_button "Sign in" }}