Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Perl CGI and Template Toolkit

by Perobl (Beadle)
on Jan 03, 2012 at 21:20 UTC ( #946138=note: print w/ replies, xml ) Need Help??


in reply to Re: Perl CGI and Template Toolkit
in thread Perl CGI and Template Toolkit

When I try to pass a reference to a HoH, it doesn't recognize it. It doesn't throw an error, but it doesn't display any of the data either.

Also, while a bit vague, the TT2 documentation on CPAN mentions that TmplParams has to be a hash.

It appears that this is an unfortunate limitation in MIME::Lite::TT::HTML. I'd really like to display this data using a table format, but it appears the best I can do is generate a comma delineated text field of the items in the CGI and then pass them in my existing hash.

EDIT

I mean hash reference in the above ... not hash.


Comment on Re^2: Perl CGI and Template Toolkit
Re^3: Perl CGI and Template Toolkit
by Eliya (Vicar) on Jan 03, 2012 at 21:38 UTC

    I'm pretty sure you're doing something else wrong.   As you can see below, MIME::Lite::TT::HTML is just passing through the respective hashref to TT2.  And TT2 can certainly handle HoHs (I've done it many times).

    $ pwd /home/eliya/tmp/MIME-Lite-TT-HTML-0.04 $ grep -r TmplParams . ./lib/MIME/Lite/TT/HTML.pm: TmplParams => \%params, ./lib/MIME/Lite/TT/HTML.pm:=head2 TmplParams ./lib/MIME/Lite/TT/HTML.pm: my $tmpl_params = delete $options->{ Tm +plParams }; $ grep -r '$tmpl_params' . ./lib/MIME/Lite/TT/HTML.pm: my $tmpl_params = delete $options->{ Tm +plParams }; ./lib/MIME/Lite/TT/HTML.pm: $tt->process( $template->{html}, $tmpl_ +params, \$html ) or croak $tt->error; ./lib/MIME/Lite/TT/HTML.pm: $tt->process( $template->{text}, $t +mpl_params, \$text ) or croak $tt->error;

    Could you show the code (with the HoH) you've tried?

      I've done it in TT2 many times too, but in this case I'm using MIME::Lite::TT::HTML. Have you actually tried to pass a HoH ref using this module?

      I know my HoH ref is good because I've tested it in the CGI. The resultant HoH ref doesn't work. The hash ref does work.

      If you're sure it can be done, and you can show me a working example of how it can be done, i'll buy you lunch :)

      Thanks.

        Ok, here you are.

        use MIME::Lite::TT::HTML; my $HoH = { item_hoh => { row1 => { index => 99, col1 => "Col 1", col2 => "Col 2" }, row2 => { index => 42, col1 => "Col 1", col2 => "Col 2" }, } }; my $msg = MIME::Lite::TT::HTML -> new( From => 'donotreply@windowsintowaukesha.com', To => 'you@foo.bar', Subject => 'Bid Strategy System - Final Pricing Approval', Template => { html => 'email_bid_strategy_final_appr.tt', }, TmplParams => $HoH, );

        where email_bid_strategy_final_appr.tt is

        [% FOREACH record IN item_hoh.values.nsort('index') %] <tr> <td>[% record.index %]</td> <td>[% record.col1 %]</td> <td>[% record.col2 %]</td> </tr> [% END %]

        To show that the correct output is produced, I've added a line to print out $html in the module's code:

        ... $tt->process( $template->{html}, $tmpl_params, \$html ) or croak $ +tt->error; print STDERR $html; # <--- ...

        and the output is (as expected):

        <tr> <td>42</td> <td>Col 1</td> <td>Col 2</td> </tr> <tr> <td>99</td> <td>Col 1</td> <td>Col 2</td> </tr>

        Now where's my lunch? ;)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://946138]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2014-09-19 23:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (151 votes), past polls