Maypole::Model::Base(3User Contributed Perl DocumentatiMaypole::Model::Base(3)NAMEMaypole::Model::Base - Base class for model classes
DESCRIPTION
This is the base class for Maypole data models. This is an abstract
class that defines the interface, and can't be used directly.
process
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:
setup_database
$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
"BeerDB::Beer".
class_of
$model->class_of($r, $table)
This maps between a table name and its associated class.
fetch_objects
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.
adopt
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.
columns
This is a list of all the columns in a table. You may also override see
also "display_columns"
table
This is the name of the table.
Actions
do_edit
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.
list
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.
edit
Empty Action.
view
Empty Action.
index
Empty Action, calls list if provided with a table.
Also, see the exported commands in "Maypole::Model::CDBI".
Other overrides
Additionally, individual derived model classes may want to override the
following methods:
display_columns
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.
list_columns
Same as display_columns, only for listings. Defaults to display_columns
column_names
Return a hash mapping column names with human-readable equivalents.
is_public
should return true if a certain action is supported, or false
otherwise. Defaults to checking if the sub has the ":Exported"
attribute.
add_model_superclass
Adds model as superclass to model classes (if necessary)
method_attrs
Returns the list of attributes defined for a method. Maypole itself
only defines the "Exported" attribute.
related
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".
SEE ALSO
Maypole, Maypole::Model::CDBI.
AUTHOR
Maypole is currently maintained by Aaron Trevena.
AUTHOR EMERITUS
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 2.04
LICENSE
You may distribute this code under the same terms as Perl itself.
perl v5.14.1 2008-04-17 Maypole::Model::Base(3)