0

Dancerで本当に単純な問題があるはずです。名前の配列があり、それぞれをテンプレートに印刷したいと思います。これらの名前は、(データベースではなく)外部ソースから取得されます。ただし、テンプレートのリストに対してforeachを実行しようとすると、最初の値しか取得されません。

コード:

use Dancer;
use Template;

set 'template' => 'template_toolkit';

get '/' => sub {
    my @list = ("one","two","three");
    template 'list.tt', {
            'values' => @list,
    };
};
dance;

そしてテンプレート:

<ul>
    <%FOREACH item IN values %>
        <li><% item %></li>
    <%END%>
</ul>

これは、単一の項目「one」を含むリストのみを出力します。私は何が欠けていますか?

4

2 に答える 2

14

'values' => @listはを含むリストに展開される"values" "one" "two" "three"ため、代わりに配列への参照を試してみてください。

template 'list.tt', {
        'values' => [@list],
};

上記は引き続き@list参照をコピーして返します。既存の配列への参照をフェッチする場合は、を使用します\@list

于 2011-08-31T17:25:43.033 に答える
6

'values':に配列参照を渡す必要があるため、賭けます。

template 'list.tt', {
        'values' => \@list,
};

そうしないと、リストが展開され、実際に次のように渡されます。

template 'list.tt', {
        'values' => $list[0],
        $list[1] => $list[2],
};
于 2011-08-31T17:26:13.690 に答える