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

Application filesystem layout

An Agavi application directory is structured according to Agavi's conventions. The Agavi project configuration system knows about the layout and its commands create or modify files and directories inside the source tree.

An application's pub directory is the document root for your web server, it contains static resources such as CSS files, javascript source, images and other items that are reachable through the web server but do not not need to be processedby the application — except for the index.php file.

The application itself — configuration, temporary and cache directories, libraries and source files — are located in the app directory which contains:

modules
Contains application modules and their corresponding contents
cache
Action cache and compiled configuration
config
Application configuration (see next chapter)
lib
Global framework extensions, third party libraries, etc
models
Global application Models
log
Log files (if logging into files is used)
templates
Global templates