The one thing that really "won me over" was the WRAPPER directive. I so want this feature in HTML::Template, but i fear that some heavy lifting will be required to add it ... anyways, WRAPPER allows you to contain a "header" and a "footer" in one file. This is incredibly useful. Imaging that you have a skeleton ... oh wait a second! I've already explained this once before to you at Re: HTML::Template question. :D
Go back and look at that example again. You may ask yourself, "well, there is a complete script for the H::T example, but where is the code for TT the example?" First, my apologies for not explaining ... second, try this:
If you want a skeleton Perl script to work with, try this one on for size:
It is practically the same code, but the template is quite different. Where TT greater differs from H::T is when i refer to [% movie.title %] -- movie doesn't have to just be an anonymous hash reference in a list, it could be a full-blown object in a list. Likewise, title doesn't have to just be a hash key, it could be a method of a movie object as well!use DBI; use Template; my $dbh = DBI->connect( ... ); my $sth = $dbh->prepare('select id,title from movie'); $sth->execute; my $movies = $sth->fetchall_arrayref({}); my $template = Template->new; $template->process(\*DATA, {movies => $movies}) or die $template->error(); __DATA__ <form> <select name="movies"> [% FOR movie = movies %] <option value="[% movie.id %]">[% movie.title %]</option> [% END %] </select> </form>
I am completely sold on TT ... but it is slower and requires programmers who have quite a bit of experience with Templates in general. There are a lot of things that you can do in TT that you probably shouldn't. For example, here is another TT example:
use Template; my $template = Template->new; $template->process(\*DATA) || die $template->error(); __DATA__ [% USE DBI( ... ) %] <form> <select name="movies"> [% FOR movie = DBI.query('select id,title from movie') %] <option value="[% movie.id %]">[% movie.title %]</option> [% END %] </select> </form>
HTML::Template is simpler and faster, but TT is more fun and extremely powerful. ;)
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
In reply to 3Re: HTML::Template, DBI and <TMPL_LOOP>'s
by jeffa
in thread HTML::Template, DBI and <TMPL_LOOP>'s
by jdtoronto
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |