我有一个带有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个输入,正确地重新填充。
答案 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);
等等。