NAME
CGI::Application::Plugin::AnyTemplate::Base - Base class for templates
DESCRIPTION
This documentation is mainly for developers who want to write additional Template drivers. For how to use the system, see the docs for CGI::Application::Plugin::AnyTemplate
METHODS
- param
 - 
The
parammethod gets and sets values within the template.my $template = $self->template->load; my @param_names = $template->param(); my $value = $template->param('name'); $template->param('name' => 'value'); $template->param( 'name1' => 'value1', 'name2' => 'value2' );It is designed to behave similarly to the
parammethod in other modules likeCGIandHTML::Template. - get_param_hash
 - 
Returns the template variables as a hash of names and values.
my %params = $template->get_param_hash;In a scalar context, returns a reference to the hash used internally to contain the values:
my $params_ref = $template->get_param_hash; - clear_params
 - 
Clears the values stored in the template:
$template->param( 'name1' => 'value1', 'name1' => 'value2' ); $template->clear_params; $template->param( 'name_foo' => 'value_bar', ); # params are now: 'name_foo' => 'value_bar', - output
 - 
Returns the template with all the values filled in.
return $template->output();You can also supply names and values to the template at this stage:
return $template->output('name' => 'value', 'name2' => 'value2');Before the template output is generated, the
template_pre_processhook is called. Any callbacks that you register to this hook will be called before each template is processed. Register atemplate_pre_processcallback as follows:$self->add_callback('template_pre_process', \&my_tmpl_pre_process);Pre-process callbacks will be passed a reference to the
$templateobject, and can can modify the parameters passed into the template by using theparammethod:sub my_tmpl_pre_process { my ($self, $template) = @_; # Change the internal template parameters by reference my $params = $template->get_param_hash; foreach my $key (keys %$params) { $params{$key} = to_piglatin($params{$key}); } # Can also set values using the param method $template->param('foo', 'bar'); }After the template output is generated, the
template_post_processhook is called. You can register atemplate_post_processcallback as follows:$self->add_callback('template_post_process', \&my_tmpl_post_process);Any callbacks that you register to this hook will be called after each template is processed, and will be passed both a reference to the template object and a reference to the output generated by the template. This allows you to modify the output of the template:
sub my_tmpl_post_process { my ($self, $template, $output_ref) = @_; $$output_ref =~ s/foo/bar/; }When you call the
outputmethod, any components embedded in the template are run. SeeEMBEDDED COMPONENTS, below. - filename
 - 
If the template was loaded from a file, the
filenamemethod returns the template filename. - string_ref
 - 
If the template was loaded from a string, the
string_refmethod returns a reference to the string. - object
 - 
Returns a reference to the underlying template driver, e.g. the
HTML::Templateobject or theTemplate::Toolkitobject. 
DOCS FOR TEMPLATE MODULE DEVELOPERS
The following documentation is of interest primarly for developers who wish to add support for a new type of Template system.
METHODS FOR DEVELOPERS
- initialize
 - 
This method is called by the controller at
loadto create the driver-specific subclass ofCGI::Application::Plugin::AnyTemplateThis is a virtual method and must be defined in the subclass.
The following paramters are passed to the driver and available as keys of the driver's
$selfobject:'driver_config' => ... # hashref of driver-specific config 'native_config' => ... # hashref of native template system specific config 'include_paths' => ... # listref of template include paths 'filename' => ... # template filename 'webapp' => ... # reference to the current CGI::Application $self - driver_config_keys
 - 
When it creates the driver object,
CGI::Application::Plugin::AnyTemplatehas to separate thedriver_configfrom thenative_config.driver_config_paramsshould return a list of parameters that are specific to the driver_config and not the native template system config.For instance, the user can specify
$self->template->config( HTMLTemplate => { embed_tag_name => 'embed', global_vars => 1, die_on_bad_params => 0, cache => 1 }, );The parameters
global_vars,die_on_bad_params, andcacheare all specific to HTML::Template. These are considered native parameters.But
embed_tag_nameconfigures theCGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplatesubclass. This is considered a driver parameter.Therefore
'embed_tag_name'should be included in the list of params returned bydriver_config_params.Example
driver_config_params:sub driver_config_keys { 'template_extension', 'embed_tag_name' } - default_driver_config
 - 
Should return a hash of default values for
driver_config_params.For instance:
sub default_driver_config { { template_extension => '.foo', embed_tag_name => 'embed', }; } - render_template
 - 
This method must be overriden in a subclass. It has the responsibility of filling the template in
$self->filenamewith the values in$self->paramvia the appropriate template system, and returning the output as either a string or a reference to a string.It also must manage embedding nested components.
 
AUTHOR
Michael Graham, <mgraham@cpan.org>
BUGS
Please report any bugs or feature requests to bug-cgi-application-plugin-anytemplate@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SOURCE
The source code repository for this module can be found at http://github.com/mgraham/CAP-AnyTemplate/
SEE ALSO
CGI::Application::Plugin::AnyTemplate
CGI::Application::Plugin::AnyTemplate::ComponentHandler
CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplate
CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplateExpr
CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplatePluggable
CGI::Application::Plugin::AnyTemplate::Driver::TemplateToolkit
CGI::Application::Plugin::AnyTemplate::Driver::Petal
CGI::Application
Template::Toolkit
HTML::Template
HTML::Template::Pluggable
HTML::Template::Plugin::Dot
Petal
CGI::Application::Plugin::TT
COPYRIGHT & LICENSE
Copyright 2005 Michael Graham, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.