我如何在 mojolicious 中使用 perl 循环生成 table 中的行数和列数?
How i can generate number of rows, columns in table using perl loop in mojolicious?
我在 mojolicious 中有一个任务,我必须将 模板文件夹 中的行数传递给 html table,在模板文件夹中,根据行数,它必须生成我要求的必要行数,为此我必须使用循环。我的想法是,我写下我想要的鱼卵数量,例如 3,提交,然后程序会生成我想要的正确数量。也许我应该使用哈希?
我的控制器:
my @rownum = (1,2,3,4,5);
$self->render("table/tablerow", rownum => \@rownum);
这是模板中的代码。
<html>
<head>
<style type="text/css">
TABLE {
border-collapse: collapse;
}
TD, TH {
padding: 10px;
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
<tr><td>Cell 1</td><td>Cell 2</td></tr>
</table>
</body>
</html>
这是一个使用 Mojo::Template 的示例。我在变量中传递行,我不在乎计数是多少。在模板中,我只是为列表中的每个元素输出一些内容:
use v5.10;
use Mojo::Template;
my @rows = (1,2,3,4,5);
my $mt = Mojo::Template->new;
say $mt->vars(1)->render(<<'EOF', { rows => \@rows } );
% for (@$rows) {
<%= "Row $_\n" =%>
% }
EOF
Mojo::Template 还有很多其他方法可以做到这一点。
由于您已将 @rownum
的引用传递给您的模板,因此可以直接在模板中使用它。然后,您可以在模板中嵌入一个 Perl 循环并遍历取消引用的数组。
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
% for my $n (@$rownum) {
<tr><td>Cell <%= $n %></td><td><%= $n %></td></tr>
% }
</table>
这将生成此 table
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
<tr><td>Cell 1</td><td>1</td></tr>
<tr><td>Cell 2</td><td>2</td></tr>
<tr><td>Cell 3</td><td>3</td></tr>
<tr><td>Cell 4</td><td>4</td></tr>
<tr><td>Cell 5</td><td>5</td></tr>
</table>
感谢您的回答,这也是我的解决方案。
我的控制器和参数:
my $rownum= $self->param('rownumber'); print $rownum; $self->render('table/tablerow', 'rownumber' => $rownum,);
我在模板中的循环是 html.ep
%foreach (1..$rownumber) { <tr> <th> <%= $_ %> </th> <td> <%= $_ %> </td> </tr> % }
我在 mojolicious 中有一个任务,我必须将 模板文件夹 中的行数传递给 html table,在模板文件夹中,根据行数,它必须生成我要求的必要行数,为此我必须使用循环。我的想法是,我写下我想要的鱼卵数量,例如 3,提交,然后程序会生成我想要的正确数量。也许我应该使用哈希?
我的控制器:
my @rownum = (1,2,3,4,5);
$self->render("table/tablerow", rownum => \@rownum);
这是模板中的代码。
<html>
<head>
<style type="text/css">
TABLE {
border-collapse: collapse;
}
TD, TH {
padding: 10px;
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
<tr><td>Cell 1</td><td>Cell 2</td></tr>
</table>
</body>
</html>
这是一个使用 Mojo::Template 的示例。我在变量中传递行,我不在乎计数是多少。在模板中,我只是为列表中的每个元素输出一些内容:
use v5.10;
use Mojo::Template;
my @rows = (1,2,3,4,5);
my $mt = Mojo::Template->new;
say $mt->vars(1)->render(<<'EOF', { rows => \@rows } );
% for (@$rows) {
<%= "Row $_\n" =%>
% }
EOF
Mojo::Template 还有很多其他方法可以做到这一点。
由于您已将 @rownum
的引用传递给您的模板,因此可以直接在模板中使用它。然后,您可以在模板中嵌入一个 Perl 循环并遍历取消引用的数组。
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
% for my $n (@$rownum) {
<tr><td>Cell <%= $n %></td><td><%= $n %></td></tr>
% }
</table>
这将生成此 table
<table>
<tr><th>Heading 1</th><th>Heading 2</th></tr>
<tr><td>Cell 1</td><td>1</td></tr>
<tr><td>Cell 2</td><td>2</td></tr>
<tr><td>Cell 3</td><td>3</td></tr>
<tr><td>Cell 4</td><td>4</td></tr>
<tr><td>Cell 5</td><td>5</td></tr>
</table>
感谢您的回答,这也是我的解决方案。 我的控制器和参数:
my $rownum= $self->param('rownumber'); print $rownum; $self->render('table/tablerow', 'rownumber' => $rownum,);
我在模板中的循环是 html.ep
%foreach (1..$rownumber) { <tr> <th> <%= $_ %> </th> <td> <%= $_ %> </td> </tr> % }