1. Introduction
    1. About Agavi
    2. MVC in Agavi
    3. Overview of Agavi
    4. Overview of Application Execution Flow
    5. A Word About Actions
    6. Application filesystem layout
    7. Overview of application configuration
  2. Setting Up The Initial Application
    1. Installing Agavi
    2. Creating an Agavi Project
    3. Finishing The Setup
    4. Finishing The Basic Setup
    5. Installing a New Copy of Your Application
  3. Adding First Code
    1. Creating A New module
    2. Creating A New Action
    3. Tying Things Together — An Introduction To Routing
    4. Fixing The Bloggie Routing
    5. Accessing Request Parameters and Validation Basics
    6. Handling Validation Errors
  4. Putting The M in MVC
    1. Creating A New Model
    2. Adapting The Actions and Views
    3. Custom Validators
  5. Polishing It Up
    1. Layers and Layouts
    2. Applying Our Layout
    3. What Are Slots?
    4. Adding The Post's Title To The URL
    5. Routing Callbacks
    6. Using Callbacks for the Title in URLs
  6. Connecting to a database
    1. The Database Manager
  7. Handling Output Variants
    1. Output Types
    2. Exception Templates
    3. Generating an RSS Feed
  8. Form Processing
    1. Adding a Post
    2. Editing a Post
    3. The Form Population Filter (FPF)
  9. Creating a User Authentication System
  10. Adding To The Master Template

Form Processing

In this chapter we'll create an admin section for the blog. Adding, editing and deleting posts are regular tasks that need to be done.

Form processing is a routine task for web applications. It's a mostly boring and monotone duty that still needs to be done with high diligence. Validation must be performed, errors handled and forms pre-filled with values. Agavi offers multiple facilities to help form processing.

The result of this chapter can be downloaded at http://www.agavi.org/guide/stages/stage7.tgz

Form Processing Workflow

A form should be processed in these steps:


  1. Present the input form to the user - this is usually named "input" and should be a GET request
  2. Submit the form to the same action using a POST request
    1. If an error occurs, present the form again with prefilled fields and error messages.
  3. If validation and form processing are successful, redirect the user to a success page. This should be a GET request to a different URL.