The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Apache::MVC - Apache front-end to Maypole

SYNOPSIS

    package BeerDB;
    use base 'Apache::MVC';
    BeerDB->setup("dbi:mysql:beerdb");
    BeerDB->config->uri_base("http://your.site/");
    BeerDB->config->display_tables([qw[beer brewery pub style]]);
    # Now set up your database:
    # has-a relationships
    # untaint columns

    1;

DESCRIPTION

Maypole is a Perl web application framework to Java's struts. It is essentially completely abstracted, and so doesn't know anything about how to talk to the outside world. Apache::MVC is a mod_perl based subclass of Maypole.

To use it, you need to create a package which represents your entire application. In our example above, this is the BeerDB package.

This needs to first inherit from Apache::MVC, and then call setup. This will give your package an Apache-compatible handler subroutine, and then pass any parameters onto the setup_database method of the model class. The default model class for Maypole uses Class::DBI to map a database to classes, but this can be changed by messing with the configuration. (Before calling setup.)

Next, you should configure your application through the config method. Configuration parameters at present are:

uri_base

You must specify this; it is the base URI of the application, which will be used to construct links.

display_tables

If you do not want all of the tables in the database to be accessible, then set this to a list of only the ones you want to display

rows_per_page

List output is paged if you set this to a positive number of rows.

You should also set up relationships between your classes, such that, for instance, calling brewery on a BeerDB::Beer object returns an object representing its associated brewery.

For a full example, see the included "beer database" application.

INSTALLATION

Create a driver module like the one above.

Put the following in your Apache config:

    <Location /beer>
        SetHandler perl-script
        PerlHandler BeerDB
    </Location>

Copy the templates found in templates/factory into the beer/factory directory off the web root. When the designers get back to you with custom templates, they are to go in beer/custom. If you need to do override templates on a database-table-by-table basis, put the new template in beer/table.

This will automatically give you add, edit, list, view and delete commands; for instance, a list of breweries, go to

    http://your.site/beer/brewery/list

For more information about how the system works and how to extend it, see Maypole.

Implementation

This class overrides a set of methods in the base Maypole class to provide it's functionality. See Maypole for these:

get_request
get_template_root
parse_args
parse_location
send_output

AUTHOR

Simon Cozens, simon@cpan.org Marcus Ramberg, marcus@thefeed.no Screwed up by Sebastian Riedel, sri@oook.de

LICENSE

You may distribute this code under the same terms as Perl itself.