【问题标题】:Dynamic form element names in Blade for Laravel 5.2Blade for Laravel 5.2 中的动态表单元素名称
【发布时间】: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-&gt;cola...
  • 那只提交表单的最后一行。
  • 如果您将数组括号作为行名的一部分,则不会。它会返回所有这些,因为它是一个数组。
  • 使用行括号作为名称的一部分,如 {text('row[][cola]'...} 导致每个元素被分配它自己的数组。所以如果我有10 行我返回 40 个单独的数组。
  • 哦,我明白你在说什么。抱歉,我的快速代码不清楚。您需要在 $row 中有一个计数器。 text('row[$incrementer][cola]' 如果您处于 for 循环中,请使用该循环中的增量器。否则,将新的 $i++ 添加到您的 foreach 循环中。因此,在您的第四列之后,您将 $i 为下一行增加一。

标签: php arrays forms blade laravel-5.2


【解决方案1】:

'' 用于字符串文字,您需要插值,""

$a = 'hi';
echo "$a there";
// hi there

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2010-09-06
    • 2023-04-07
    • 2018-02-05
    • 1970-01-01
    • 2016-03-12
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多