CGI::Application::Plugin::PageBuilder - Simplifies building pages with multiple templates. |
CGI::Application::Plugin::PageBuilder - Simplifies building pages with multiple templates.
This module simplifies building complex web pages with many small piecemeal templates.
Instead of
sub run_mode { my $self = shift; my $header = $self->load_tmpl( 'header.tmpl' )->output(); my $html;
my $start = $self->load_tmpl( 'view_start.tmpl' ); $start->param( view_name => 'This View' ); $html .= $start->output();
my $db = MyApp::DB::Views->retrieve_all(); # Class::DBI while ( my $line = $db->next() ) { my $template = $self->load_tmpl( 'view_element.tmpl' ); $template->param( name => $line->name() ); $template->param( info => $line->info() ); $html .= $template->output(); } $html .= $self->load_tmpl( 'view_end.tmpl' )->output(); $html .= $self->load_tmpl( 'footer.tmpl' )->output(); return $html; }
You can do this:
CGI:App subclass:
sub run_mode { my $self = shift;
$self->pb_template( 'header.tmpl' ); $self->pb_template( 'view_start.tmpl' );
my $db = MyApp::DB::Views->retrieve_all(); while( my $line = $db->next() ) { $self->pb_template( 'view_row.tmpl' ); $self->pb_param( name, $line->name() ); $self->pb_param( info, $line->info() ); } $self->pb_template( 'view_end.tmpl' ); $self->pb_template( 'footer.tmpl' ); return $self->pb_build(); }
$self->pb_template( 'the_template_to_use.tmpl', ... );
Adds the template to the page. Any arguments past the template name are passed on to HTML::Template.
$self->pb_param( name, value );
Sets the value for the param in the template. This applies to the last template loaded by pb_template().
$self->pb_build();
Returns the combined page.
Clint Moore <cmoore@cpan.org>
Copyright (c) 2005, Clint Moore <cmoore@cpan.org>
.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
CGI::Application::Plugin::PageBuilder - Simplifies building pages with multiple templates. |