当前位置:  开发笔记 > 编程语言 > 正文

在使用Template Toolkit的Catalyst项目中显示DBIx :: Class ResultSet的正确方法是什么?

如何解决《在使用TemplateToolkit的Catalyst项目中显示DBIx::ClassResultSet的正确方法是什么?》经验,为你挑选了2个好方法。

给定DBIx :: Class结果集,例如:

my $rs = $c->model("DB::Card")->search({family_name => "Smith"});

我读过的教程使用stash传递一行arrayref:

$c->stash->{cards} = [$rs->all];

这导致查询在此时执行,并且生成的对象填充到存储中,因此它们可以在TemplateToolkit中用作:

[% FOREACH card IN cards %] 
    [% card.given_name %] [% card.family_name %] 
[%END%]

有没有一种正确的方法让TT在从数据库中获取时对行进行迭代?



1> friedo..:

当然.您可以将结果集直接传递给TT并在模板中迭代它.

$c->stash->{cards} = $rs;

...然后:

[% WHILE (card = cards.next) %]
    [% card.given_name %] [% card.family_name %]
[% END %]



2> 小智..:

或者,甚至更好:

$c->stash(cards => $rs);

...在TT模板中:

[% FOREACH card = cards %]
    [% card.given_name %] [% card.family_name %]
[% END %]


这有用吗? - FOREACH采用数组,而不是记录集,不是吗?
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有