Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

HTML::Template nested Table

by Takamoto (Scribe)
on Jun 30, 2020 at 21:11 UTC ( #11118737=perlquestion: print w/replies, xml ) Need Help??

Takamoto has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I am experimenting with templating a table. I have no issues with fixed data structures... but now I need to generate a table with HTML::Template where the number and the names of the columns may vary. I generate my data like this:

my $dictionary = [ { 'Spanish' => 'uno', 'English' => 'one', 'Italian' => 'uno', }, { 'Spanish' => 'dos', 'English' => 'twho', 'Italian' => 'due', }, { 'Spanish' => 'tres', 'English' => 'Three', 'Italian' => 'tre', } ]; use HTML::Template; my $template = HTML::Template->new(filename => 'dictionary.tmpl'); $template->param(DICTIONARY => $dictionary); $template->output;

However, my data may also look like this:

my $dictionary = [ { 'Spanish' => 'uno', 'French' => '1', }, { 'Spanish' => 'dos', 'French' => '2', }, { 'Spanish' => 'tres', 'French' => '3', } ];

How could I template this?

Replies are listed 'Best First'.
Re: HTML::Template Table
by Takamoto (Scribe) on Jun 30, 2020 at 21:58 UTC

    Okay, got it. I have been able to use a nested loop, modifying my data structure to:

    $VAR1 = [ { 'inner_loop' => [ { 'data' => 'one' }, { 'data' => 'two' }, { 'data' => 'three' } ] }, { 'inner_loop' => [ { 'data' => 'four' }, { 'data' => 'five' }, { 'data' => 'six' } ] }, { 'inner_loop' => [ { 'data' => 'seven' }, { 'data' => 'eight' }, { 'data' => 'nine' } ] } ];

    And the following template

    <tbody> <TMPL_LOOP NAME=DICTIONARY> <tr> <TMPL_LOOP NAME=inner_loop> <td><TMPL_VAR NAME=data></td> </TMPL_LOOP> </tr> </TMPL_LOOP> </tbody>
Re: HTML::Template nested Table
by perlfan (Priest) on Jul 02, 2020 at 13:17 UTC
    Nice to see you solved it. I personally use Template Toolkit (via Template). In addition to it being very mature, robust, well supported in a number of great Perl webframes, and well documented; it is also very flexible and is basically its own programming language. So much so that if had been around when Rasmus Lerdorf used Perl to create the first incantations of PHP, I am sure he would have used TT rather than roll his own thing. Ignore that last part, I'm trying to talk you into using it. xD

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2020-08-10 16:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Which rocket would you take to Mars?










    Results (58 votes). Check out past polls.

    Notices?