in reply to Reusable template components with HTML::Template
A possibly non-obvious "other means" is to produce the table HTML by using a separate HTML::Template instance that uses its own template for the table part. This looks likeYou now have the basis for a reusable component that you can pull out any time you need to embed tables in a template. Variations include passing a query into the component, which then extracts data from some data source. This technique also extends nicely to other types of components.sub tableHTML { my %table_data = @_; my $template = HTML::Template->new(filename => 'table.tmpl'); $template->param(%table_data); return $template->output; }
One thing that concerns me about this approach is that you now have to worry about managing a template widget library. Either you copy table.tmpl into every project directory that needs it, or you introduce some scheme for looking these widgets up every time they're referenced -- and doing version control ala "DLL Hell". (There may be a third way that escapes me at the moment; I suppose you could symlink to table.tmpl every time you need it, but that seems to me like the worst of both worlds.)
This is hardly an insurmountable problem, but I don't think it's trivial, either. (Maybe I'm wrong; if so, would someone point me to the trivial solution please? :-) So it seems to me that this "template widgets" approach would be more useful for a large, relatively heavyweight project than for something smaller... and my point of view is no doubt coloured by the fact that I'm mostly interested in smaller projects.
--
F
o
x
t
r
o
t
U
n
i
f
o
r
m
Found a typo in this node? /msg me
% man 3 strfry
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Reusable template components with HTML::Template
by dws (Chancellor) on Aug 04, 2004 at 01:43 UTC | |
by FoxtrotUniform (Prior) on Aug 04, 2004 at 23:09 UTC | |
by Aristotle (Chancellor) on Aug 04, 2004 at 23:28 UTC | |
by dws (Chancellor) on Aug 05, 2004 at 05:00 UTC | |
by Aristotle (Chancellor) on Aug 05, 2004 at 21:24 UTC |