在HTML中,可以使用非唯一名称指定多个字段,如下所示:
<input type="checkbox" name="breakfast" value="eggs">
<input type="checkbox" name="breakfast" value="bacon">
这样,在提交时,查询参数就会被传递(如果两个框都被勾选)breakfast=eggs&breakfast=bacon
。 CGI规范声明这应该被解释为数组或值列表,并且这种技术对于动态大小的输入列表也很有用:
<input type="text" name="url">
<input type="button" value="More…"
onclick="var s = document.createElement('input');
s.type='text';
s.name='url';
this.form.appendChild(s);
return false;">
但是,我无法从Yesod中的表单中获取列表值输入。有没有办法做这样的事情?
答案 0 :(得分:3)
大多数预建字段使用单个输入处理输入(multiSelectField有一个值得注意的例外)。要实现您的目标,您可能需要创建自定义Field。请注意,fieldParse
函数采用Text
值列表,专门用于允许您的用例。
chapter on forms包含有关自定义字段的部分。