【发布时间】:2012-12-20 05:36:05
【问题描述】:
我有一个带有 CI 验证的表单,它使用数组作为输入名称。视图最初有这样的代码:
<input type="text" name="feed_urls[]"
value="<?php echo set_value('feed_urls[]', ''); ?>" >
当加载到浏览器中时会正确转换为:
<input type="text" name="feed_urls[]" value="">
然后通过 Jquery,用户可以在提交之前向 DOM 添加更多相同的<input>,因此最终发布的内容可能是例如
<input type="text" name="feed_urls[]" value="">
<input type="text" name="feed_urls[]" value="">
<input type="text" name="feed_urls[]" value="">
现在,如果提交的数据通过验证,则一切正常并存储在 DB 中。但是如果验证失败,控制器会发送回视图,但我看不到 POSTed 表单的 N <input>。我只看到一个并且它是空的,这是可以理解的,因为我没有向 set_values() 提供第二个参数,但是再次预期的是通过 $this->input->post 重新填充输入(feed_urls) 数组,其中包含无效的 POST 数据。
我确实在控制器上验证 $this->input->post('feed_urls') 是否有发布的内容(无效或无效)。
我已阅读关于使用validation with arrays as field names 的 CI 用户指南文档
关于 set_value() 的正确用法有什么想法吗?正确是指在验证失败时,我得到了 N 个已发布的输入,并一一正确地重新填充。
【问题讨论】:
标签: forms codeigniter validation populate