CGI::Application::Plugin::HTCompiled - Integrate with
# In your CGI::Application-derived base class. . .
use base ("CGI::Application::Plugin::HTCompiled", "CGI::Application");
# Later, in a run mode far, far away. . .
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 );
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
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
Reload this page
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
my ($self, $tmpl_file, @extra_params) = @_;
push @extra_params, "cache", "1";
return $self->SUPER::load_tmpl($tmpl_file, @extra_params);
Mark Stosberg "" ...but largely modeled on HTDot
plugin by Jason A. Crome.
Please report any bugs or feature requests to
"email@example.com", or through the web
. I will be notified, and then you'll automatically be
notified of progress on your bug as I make changes.
The usual crowd in #cgiapp on irc.perl.org
CGI::Application, HTML::Template, HTML::Template::Compiled,
COPYRIGHT & LICENSE
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.