【发布时间】:2013-04-20 03:40:15
【问题描述】:
我在 SQLite 数据库中有一个表,并且我有一个名为 Account 的架构。我还有一个搜索用户的表单。在我的控制器中,我这样做:
my $params ||= $c->req->parameters; # Don't know what the difference is between ||= and =, did that way because someone had done it to and it works
my $search_term = $params->{search};
if( $c->request->params{submit} )
{
$c->stash->{search_term} = $search_term;
$c->stash->{search_results} = $c->model("DB::Account")->find({
firstname => { like => "%$search_term%" },
}) if $c->stash->{search_term};
}
那么在我看来我有这样的东西。
[% IF search_results > 0 %]
[% FOREACH results IN search_results %]
[% results.email %] <br/>
[% results.firstname %]
[% END %]
上面的代码工作正常。我要做的是搜索与firstname、lastname 或其他列匹配的表,而不仅仅是一列。
我对 Catalyst 框架和 Perl 还很陌生(曾经用 perl 做过一些事情,但不是很先进),所以任何帮助和提示都将不胜感激。
【问题讨论】:
-
您应该转义变量以防止 XSS:[% results.email | html %]
[% results.firstname | html %] 另外,在这个例子中,你的 [% IF ... %] 语句是不需要的并且可能是错误的(IF search_results.size > 0) -
感谢您的提示,将尝试那些