1

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

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

当加载到浏览器中时,它会正确转换为:

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

然后通过 Jquery,用户可以<input>在提交之前向 DOM 添加更多相同的 's,所以最终发布的内容可能是例如

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

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

我确实在控制器上验证 $this->input->post('feed_urls') 是否有发布的内容(无效或无效)。

我已阅读 CI 用户指南文档,了解使用数组作为字段名称进行验证

关于 set_value() 的正确用法有什么想法吗?正确的意思是,在验证失败时,我得到了 N 个已发布的输入,并一一正确地重新填充。

4

2 回答 2

1

您可以使用:

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

我已经在 CI 2.0 上对其进行了测试,但它应该也可以在以前的版本中使用。

干杯!

于 2013-10-31T23:03:51.543 回答
0

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

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

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

等等。

于 2013-04-08T12:31:24.077 回答