Yesod中动态大小的字段列表

时间:2012-07-14 15:58:23

标签: forms haskell web yesod

在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中的表单中获取列表值输入。有没有办法做这样的事情?

1 个答案:

答案 0 :(得分:3)

大多数预建字段使用单个输入处理输入(multiSelectField有一个值得注意的例外)。要实现您的目标,您可能需要创建自定义Field。请注意,fieldParse函数采用Text值列表,专门用于允许您的用例。

chapter on forms包含有关自定义字段的部分。