Codeigniter:set_value没有正确地重新填充数组表单字段

时间:2013-01-06 06:23:08

标签: forms codeigniter validation populate

我有一个带有CI验证的表单,它使用数组作为输入名称。该视图最初具有以下代码:

<input type="text" name="feed_urls[]"
   value="<?php echo set_value('feed_urls[]', ''); ?>" >
加载到浏览器中的

正确转换为:

<input type="text" name="feed_urls[]" value="">

然后通过Jquery,用户可以在提交之前向DOM添加更多相同的<input>,因此最后POST的内容可能是例如。

<input type="text" name="feed_urls[]" value="">
<input type="text" name="feed_urls[]" value="">
<input type="text" name="feed_urls[]" value="">

现在,如果提交的数据通过验证,则一切正常并存储在DB中。但是如果验证失败,控制器会发送回视图,但我看不到POST表单的N <input>。我只看到一个并且它是空的,这是可以理解的,因为我没有为set_values()提供第二个参数,但是再次预期的是通过$ this-&gt;输入重新填充输入 - &gt ; post(feed_urls)数组,其中包含无效的POSTed数据。

我确实在控制器验证$ this-&gt; input-&gt; post('feed_urls')有POST的内容(无效或无效)。

我已阅读使用validation with arrays as field names

的CI用户指南文档

有关正确使用set_value()的任何想法?通过正确我的意思是,在验证失败时,我得到了已经POST的N个输入,正确地重新填充。

2 个答案:

答案 0 :(得分:1)

您可以使用:

<input type="text" name="feed_urls[]" value="<?php echo set_value('feed_urls[0]'); ?>">

我在CI 2.0上测试了它,但它也应该在以前的版本中使用。

干杯!

答案 1 :(得分:0)

由于您只提供了一小部分代码,我只能提示您认为我的主要问题。

可以使用jQuery填充输入数组的n元素,如下所示:

$("[id^=feed_urls]").eq(0).val(someURL);
$("[id^=feed_urls]").eq(1).val(someURL);
$("[id^=feed_urls]").eq(2).val(someURL);

等等。