Template::Provider::DBIC - Load templates using DBIx::Class


Template-Provider-DBIC documentation  | view source Contained in the Template-Provider-DBIC distribution.

Index


NAME

Top

Template::Provider::DBIC - Load templates using DBIx::Class

SYNOPSIS

Top

    use My::DBIC::Schema;
    use Template;
    use Template::Provider::DBIC;

    my $schema = My::DBIC::Schema->connect(
        $dsn, $user, $password, \%options
    );
    my $resultset = $schema->resultset('Template');

If all of your templates are stored in a single table the most convenient method is to pass the provider a DBIx::Class::ResultSet.

    my $template = Template->new({
        LOAD_TEMPLATES => [
            Template::Provider::DBIC->new({
                RESULTSET => $resultset,
                # Other template options like COMPILE_EXT...
            }),
        ],
    });

    # Process the template 'my_template' from resultset 'Template'.
    $template->process('my_template');
    # Process the template 'other_template' from resultset 'Template'.
    $template->process('other_template');

Alternatively, where your templates are stored in several tables you can pass a DBIx::Class::Schema and specify the result set and template name in the form ResultSet/template_name.

    my $template2 = Template->new({
        LOAD_TEMPLATES => [
            Template::Provider::DBIC->new({
                SCHEMA => $schema,
                # Other template options...
            }),
        ],
    });

    # Process the template 'my_template' from resultset 'Template'.
    $template->process('Template/my_template');
    # Process the template 'my_template' from resultset 'Other'.
    $template->process('Other/my_template');

In cases where both are supplied, the more specific RESULTSET will take precedence.

DESCRIPTION

Top

Template::Provider::DBIC allows a Template object to fetch its data using DBIx::Class instead of, or in addition to, the default filesystem-based Template::Provider.

SCHEMA

This provider requires a schema containing at least the following:

A column containing the template name. When $template->provider($name) is called the provider will search this column for the corresponding $name. For this reason the column must be a unique key, else an exception will be raised.

A column containing the actual template content itself. This is what will be compiled and returned when the template is processed.

A column containing the time the template was last modified. This must return - or be inflated to - a date string recognisable by Date::Parse.

OPTIONS

In addition to supplying a RESULTSET or SCHEMA and the standard Template::Provider options, you may set the following preferences:

COLUMN_NAME

The table column that contains the template name. This will default to 'name'.

COLUMN_CONTENT

The table column that contains the template data itself. This will default to 'content'.

COLUMN_MODIFIED

The table column that contains the date that the template was last modified. This will default to 'modified'.

METHODS

Top

->fetch( $name )

This method is called automatically during Template's ->process() and returns a compiled template for the given $name, using the cache where possible.

USE WITH OTHER PROVIDERS

Top

By default Template::Provider::DBIC will raise an exception when it cannot find the named template. When TOLERANT is set to true it will defer processing to the next provider specified in LOAD_TEMPLATES where available. For example:

    my $template = Template->new({
        LOAD_TEMPLATES => [
            Template::Provider::DBIC->new({
                RESULTSET => $resultset,
                TOLERANT  => 1,
            }),
            Template::Provider->new({
                INCLUDE_PATH => $path_to_templates,
            }),
        ],
    });




CACHING

Top

When caching is enabled, by setting COMPILE_DIR and/or COMPILE_EXT, Template::Provider::DBIC will create a directory consisting of the database DSN and table name. This should prevent conflicts with other databases and providers.

SEE ALSO

Top

Template, Template::Provider, DBIx::Class::Schema

DIAGNOSTICS

Top

In addition to errors raised by Template::Provider and DBIx::Class, Template::Provider::DBIC may generate the following error messages:

A valid DBIx::Class::Schema or ::ResultSet is required

One of the SCHEMA or RESULTSET configuration options must be provided.

%s not valid: must be of the form $table/$template

When using Template::Provider::DBIC with a DBIx::Class::Schema object, the template name passed to ->process() must start with the name of the result set to search in.

'%s' is not a valid result set for the given schema

Couldn't find the result set %s in the given DBIx::Class::Schema object.

Could not retrieve '%s' from the result set '%s'

Unless TOLERANT is set to true failure to find a template with the given name will raise an exception.

DEPENDENCIES

Top

Carp

Date::Parse

File::Path

File::Spec

Template::Provider

Additionally, use of this module requires an object of the class DBIx::Class::Schema or DBIx::Class::ResultSet.

BUGS

Top

Please report any bugs or feature requests to bug-template-provider-dbic at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Template-Provider-DBIC.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc Template::Provider::DBIC

You may also look for information at:

* Template::Provider::DBIC

http://perlprogrammer.co.uk/modules/Template::Provider::DBIC/

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Template-Provider-DBIC/

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Template-Provider-DBIC

* Search CPAN

http://search.cpan.org/dist/Template-Provider-DBIC/

AUTHOR

Top

Dave Cardwell <dcardwell@cpan.org>

COPYRIGHT AND LICENSE

Top


Template-Provider-DBIC documentation  | view source Contained in the Template-Provider-DBIC distribution.