Maypole::Model::Base - Base class for model classes
This is the base class for Maypole data models. This is an abstract class that
defines the interface, and can't be used directly.
This is the engine of this module. Given the request object, it populates all
the relevant variables and calls the requested action.
Anyone subclassing this for a different database abstraction mechanism needs to
provide the following methods:
$model->setup_database($config, $namespace, @data)
Uses the user-defined data in @data to specify a database- for example, by
passing in a DSN. The model class should open the database, and create a class
for each table in the database. These classes will then be
"adopt"ed. It should also populate "$config->tables"
and "$config->classes" with the names of the classes and tables
respectively. The classes should be placed under the specified namespace. For
instance, "beer" should be mapped to the class
This maps between a table name and its associated class.
This class method is passed a request object and is expected to return an object
of the appropriate table class from information stored in the request object.
This class method is passed the name of a model class that represensts a table
and allows the master model class to do any set-up required.
This is a list of all the columns in a table. You may also override see also
This is the name of the table.
- If there is an object in "$r->objects", then it should be
edited with the parameters in "$r->params"; otherwise, a new
object should be created with those parameters, and put back into
"$r->objects". The template should be changed to
"view", or "edit" if there were any errors. A hash of
errors will be passed to the template.
- The "list" method should fill "$r->objects" with
all of the objects in the class. You may want to page this using
"Data::Page" or similar.
- Empty Action.
- Empty Action.
- Empty Action, calls list if provided with a table.
Also, see the exported commands in "Maypole::Model::CDBI".
Additionally, individual derived model classes may want to override the
Returns a list of columns to display in the model. By default returns all
columns in alphabetical order. Override this in base classes to change
ordering, or elect not to show columns.
Same as display_columns, only for listings. Defaults to display_columns
Return a hash mapping column names with human-readable equivalents.
should return true if a certain action is supported, or false otherwise.
Defaults to checking if the sub has the ":Exported" attribute.
Adds model as superclass to model classes (if necessary)
Returns the list of attributes defined for a method. Maypole itself only defines
the "Exported" attribute.
This can go either in the master model class or in the individual classes, and
returns a list of has-many accessors. A brewery has many beers, so
"BeerDB::Brewery" needs to return "beers".
Maypole is currently maintained by Aaron Trevena.
Simon Cozens, "simon#cpan.org"
Simon Flack maintained Maypole from 2.05 to 2.09
Sebastian Riedel, "sri#oook.de" maintained Maypole from 1.99_01 to
You may distribute this code under the same terms as Perl itself.