【发布时间】:2016-06-17 05:30:59
【问题描述】:
我正在尝试创建一个表单来更新表中的多行数据。该表有四列( cola、colb、colc、cold )。在我看来,我正在使用 foreach 循环动态生成表单。目前我正在使用
text('cola[][cola]', $this->cola...
然后向下命名,然后填充表单字段。这很好用,除了它返回一个包含四个数组( cola、colb、colc、cold )的数组,这样我的所有 cola 值都在一个数组中,所有 colb 值都在另一个数组中,等等。
我想要的是返回提交的每一行的数组,这样我的结果就会像
0(cola=3, colb=7, colc=2, cold=99)
这样我就可以简单地使用 for each 循环访问这些值。但是,我是 HTML 补救措施,似乎无法在表单元素上正确命名来完成此操作。我知道答案很明显,但我总是遇到我不想要的数组或只提交最后一行的数据。
编辑澄清...
使用
text('row[$this->key][cola]'
或者
text('row[$i][cola]'
使用 $i 作为迭代器会产生一个名称为 $i 或 $this->key 的数组,它只返回提交的最后一行。删除引号,如
text(row[$i][cola]
导致未定义的常量,因为字符串是预期的。
我最接近成功的是
text('row['<php echo $i ?>'][cola]'
这实际上正确地命名了表单元素,但破坏了元素本身。它们呈现为纯文本,而不是输入框。我真的在这方面有点疯狂。
【问题讨论】:
-
从行开始,然后是列?即
text('row[][cola]', $this->cola... -
那只提交表单的最后一行。
-
如果您将数组括号作为行名的一部分,则不会。它会返回所有这些,因为它是一个数组。
-
使用行括号作为名称的一部分,如 {text('row[][cola]'...} 导致每个元素被分配它自己的数组。所以如果我有10 行我返回 40 个单独的数组。
-
哦,我明白你在说什么。抱歉,我的快速代码不清楚。您需要在 $row 中有一个计数器。
text('row[$incrementer][cola]'如果您处于 for 循环中,请使用该循环中的增量器。否则,将新的 $i++ 添加到您的 foreach 循环中。因此,在您的第四列之后,您将 $i 为下一行增加一。
标签: php arrays forms blade laravel-5.2