Apache::MVC - Apache front-end to Maypole |
Apache::MVC - Apache front-end to Maypole
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;
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 the Class::DBI manpage 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:
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.
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.
Simon Cozens, simon@cpan.org
You may distribute this code under the same terms as Perl itself.
Apache::MVC - Apache front-end to Maypole |