这是我的第一个问题,如果你能帮助我,我会很高兴。
我必须捕获一组动态输入的值,我用jQuery生成输入。我不知道这是一个很好的解决方案,最后使用相同的名称括号括号:
<!-- first set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">
<!-- second set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">
<!-- etc... -->
或者只是在名称的末尾使用一个计数器,如下所示:
<!-- first set of entries -->
<input type="text" name="nombre_contacto1">
<input type="text" name="mail_contacto1">
<!-- second set of entries -->
<input type="text" name="nombre_contacto2">
<input type="text" name="mail_contacto2">
<!-- etc... -->
我如何抓住控制器上的每一件物品?这可能吗?
谢谢!
答案 0 :(得分:0)
你最好的选择是使用数组,正如你在第一个例子中所做的那样。
要获得所有结果,这样的结果将起作用:
$names = $this->input->post('nombre_contacto');
$emails = $this->input->post('mail_contacto');
这两个变量现在都是数组,它们的值是用户输入的任何值,它们的键是它们在表单中出现的顺序。
这样的事情可以给你一个想法:
foreach ($names as $key => $value)
{
$contact[$key] = $value;
}
foreach ($emails as $key => $value)
{
$contact[$key] .= ' - '.$value;
}
现在您有了一个新数组,其值如下:John Smith - jon@smith.com
这只是一个例子,我不知道你对这些值做了什么。
还有一个例子:如果出于某种原因你必须访问发布的第三个名字,你可以使用:
echo $_POST['nombre_contacto'][2]; // Arrays have 0 based index, so this is #3
这是包含brackets[]
的输入名称。在我看来,这绝对是最好的方式。你不需要猜测有多少输入,因为它将是一个数组。
只是为了澄清:在字段名称中使用括号会在输入到服务器时将输入转换为数组,从而可以使用相同的字段名称发布多个值。没有括号,它将是一个字符串值和技术上是一个不同的字段。