我正在使用模板工具包,使用perl Dancer。我有一个表格,这个表格有一个选择。 我正在尝试提交表单后页面返回到相同的表单,维护选择中选择的上一个项目。 Ldap_List包含10个项目。
这是选择代码:
<form class="well form-inline" method="post" action="[% request.uri_base %]/foo/ldap">
<fieldset>
<legend>Select the LDAP:</legend>
<select class="selectpicker" name="ldap_selected">
[% FOREACH ldap IN Ldap_List %]
<option value=[% ldap %]>[% ldap %]</option>
[% END %]
</select>
<button type="submit" class="btn btn-primary">Go!</button>
</fieldset>
</form>
选择了最后一个ldap的变量是ldap_selected,并且已定义并具有正确的值,我用以下方法检查:
[% IF ldap_selected %]
[% ldap_selected %]
[% END %]
我试过这个,但不起作用:
<select class="selectpicker" name="ldap_selected">
[% FOREACH ldap IN Ldap_List %]
[% IF ldap == ldap_selected %]
<option value=[% ldap %] selected>[% ldap %]</option>
[% ELSE %]
<option value=[% ldap %]>[% ldap %]</option>
[% END %]
[% END %]
</select>
因为这样,在select中出现了ldap_selected,但它是列表中唯一的一个选项。
我怎样才能实现这个目标?
答案 0 :(得分:1)
您只需要在HTML Form
标记周围添加一个简单的Select
标记,然后使用类似Form
的内容读取Perlscript中的params->{'ldap_selected'}
参数。我建议你阅读Dancer
Documentation。
对于这种情况,您可以开始查看here
编辑:
编辑后,似乎是Template Toolkit
问题。你说,你有ldap_selected
的价值,它似乎是你需要的价值。 [% IF ldap == ldap_selected %]
正是您需要做的事情。你的语法是正确的。
我可以看到两个可能的问题/解决方案:
ldap_selected
包含换行符或未设置。ldap
包含换行符。在浏览器中用 ctrl + u 检查每个变量的输出。也许你可以看到换行符。尝试使用硬编码IF ...
(ldap_selected
)和
[% IF ldap_selected == 'foo' %]
部分
[% FOREACH ldap IN [ 'foo', 'bar', 'baz' ] -%]
ldap
部分。
当无效时,请检查您是否更改了TT
MyWeb-App/config.yml
配置