1. Introduction
    1. About Agavi
    2. MVC in Agavi
    3. Overview of Agavi services
    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. The Form Population Filter

Introduction

About this guide

This guide provides a comprehensive overview of the architecture of the Agavi application framework, examining various common Web application problems and how Agavi addresses them. It does not cover the api documentation which can be found in a separate section of the website.

During the course we will cover the complete development cycle of a PHP blog engine, from a basic skeleton application to a working and themed implementation. It is broken down into stages: each chapter involves the creation of a partial implementation, so you can see the blog software in various stages of development and make comparisons. The stages are available as tarballs.

The final version of the blog engine is also the official demo application of Agavi. It is extremely well documented and showcases many of the features Agavi has to offer.

Note: This guide is written for an experienced developer who has created Web applications in the past. It does not include a detailed discussion of the Model-View-Controller (MVC) pattern or its associated implications, benefits, and disadvantages. There is certain basic knowledge that you must possess to understand and wield the power of a production framework. Agavi is not complicated, but it is certainly vast. If you are a newcomer to Web application development, you should start your quest by studying MVC and HTTP mechanics. HTTP and the MVC architecture have a profound influence on how developers structure software and design user interfaces, sometimes in subtle ways.
Note: Since this tutorial focuses on building a Web application, it will often refer to Agavi features specifically within a Web context. However, Agavi is designed to be able to run in multiple contexts; most of the Web-oriented behaviors described can be easily generalized.
Note: This guide is valid for Agavi 1.0.X. Please note that beta versions and release candidates may differ in some aspects.

Prerequisites

You'll need a webserver and PHP >= 5.2.0. The basics of setting up a webserver and installing PHP will not be covered in this guide, please refer to the respective documentations.

Resources and Staging apps

All resources required for this tutorial can be downloaded from http://www.agavi.org/guide/resources/resources.tgz the staging apps can be downloaded from http://www.agavi.org/guide/stages/stage1.tgz to http://www.agavi.org/guide/stages/stage7.tgz.