CGI::Application::Plugin::HTCompiled - Integrate with HTML::Template::Compiled
# In your CGI::Application-derived base class. . . use base ("CGI::Application::Plugin::HTCompiled", "CGI::Application"); # Later, in a run mode far, far away. . . sub view { my $self = shift; my $username = $self->query->param("user"); my $user = My::Users->retrieve($username); my $tmpl_view = $self->load_tmpl( "view_user.tmpl" ); $tmpl_view->param( user => $user ); return $tmpl_view->output; }
Allows you to use HTML::Template::Compiled as a seamless replacement for HTML::Template, as far as is possible with that module.
For the most part, this is the exact load_tmpl() method from CGI::Application, except it uses HTML::Template::Compiled instead of HTML::Template.
load_tmpl()
See the CGI::Application reference for more detailed information on what parameters can be passed to load_tmpl().
By default, the HTCompiled plugin will automatically add a parameter 'c' to the template that will return to your CGI::Application object $self. This allows you to access any methods in your CGI::Application module that you could normally call on $self from within your template. This allows for some powerful actions in your templates. For example, your templates will be able to access query parameters, or if you use the CGI::Application::Plugin::Session module, you can access session parameters.
<a href="<tmpl_var c.query.self_url>">Reload this page</a>
With this extra flexibility comes some responsibilty as well. It could lead down a dangerous path if you start making alterations to your object from within the template. For example you could call c.header_add to add new outgoing headers, but that is something that should be left in your code, not in your template. Try to limit yourself to pulling in information into your templates (like the session example above does).
There are times when the basic load_tmpl() functionality just isn't enough. The easiest way to do this is by replacing or extending the functionality of CGI::Application's load_tmpl() method. This is still possible using the plugin.
The following code snippet illustrates one possible way of achieving this:
sub load_tmpl { my ($self, $tmpl_file, @extra_params) = @_; push @extra_params, "cache", "1"; return $self->SUPER::load_tmpl($tmpl_file, @extra_params); }
Mark Stosberg <mark@summersault.com> ...but largely modeled on HTDot plugin by Jason A. Crome.
<mark@summersault.com>
Please report any bugs or feature requests to bug-cgi-application-plugin-htcompiled@rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CGI-Application-Plugin-HTCompiled. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-cgi-application-plugin-htcompiled@rt.cpan.org
The usual crowd in #cgiapp on irc.perl.org
CGI::Application, HTML::Template, HTML::Template::Compiled,
Copyright 2005 Mark Stosberg, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install CGI::Application::Plugin::HTCompiled, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Application::Plugin::HTCompiled
CPAN shell
perl -MCPAN -e shell install CGI::Application::Plugin::HTCompiled
For more information on module installation, please visit the detailed CPAN module installation guide.