php - 具有多个动态创建的同名输入字段的 PHP 表单
问题描述
我正在构建一个动态表单,用户可以创建更多卡片,并且在这些卡片中他们可以创建更多子字段 - 请参阅图片以进行演示。
html示例:
<fieldset data-CardIndex="1">
<div class="delete">X</div>
<input type="text" name="firstField[]" value="" required>
<input type="text" name="secondField[]" value="" required>
<input type="text" name="thirdField[]" value="" required>
<a class="addLinkBtn">+ Add More Child Fields</a>
<div class="childWrapper">
<input type="text" name="childOne[]" value="" required>
<input type="text" name="childTwo[]" value="" required>
</div>
</div>
</fieldset>
例如,当我用三张卡片提交表单时,Card1 中有一组 childOne 和 childTwo,Card2 中有两组,Card3 中有一组。我得到以下数组:
Array
(
[firstField] => Array
(
[0] => a
[1] => b
[2] => c
)
[secondField] => Array
(
[0] => a
[1] => b
[2] => c
)
[thirdField] => Array
(
[0] => a
[1] => b
[2] => c
)
[childOne] => Array
(
[0] => aa
[1] => bb
[2] => bbbb
[3] => cc
)
[childTwo] => Array
(
[0] => aa
[1] => bb
[2] => bbbb
[3] => cc
)
[submit_update] =>
)
但我想收到一些类似的东西:
Array
(
[0] => Array
(
[firstField] => a
[secondField] => a
[thirdField] => a
[0] => Array
(
[childOne] => aa
[childTwo] => aa
)
)
[1] => Array
(
[firstField] => b
[secondField] => b
[thirdField] => b
[0] => Array
(
[childOne] => bb
[childTwo] => bb
)
[1] => Array
(
[childOne] => bbbb
[childTwo] => bbbb
)
)
[2] => Array
(
[firstField] => c
[secondField] => c
[thirdField] => c
[0] => Array
(
[childOne] => cc
[childTwo] => cc
)
)
[submit_update] =>
)
有没有一种方法可以构建 HTML 或调用 PHP 函数来获得我正在寻找的输出?
我寻找这个解决方案的原因是因为当你有一堆子集时,它会变成一场噩梦,试图找出哪个集属于哪张卡。我尝试使用唯一标识,例如name="childOne[1-1]"
表示它属于 Card1 并且是第一个子集。也不能让它在这条路线上工作。
非常感谢你们提出的任何意见,我已经断断续续地奋斗了整整一周。
谢谢
解决方案
推荐阅读
- c++ - 在编译时对算术 `value_type` 的 `std::array` 进行零初始化会导致缺少构造函数注释
- list - 递归列表 - Haskell
- java - 我可以通过 Java 在 Selenium 中使用没有 ExpectedCondition 的 WebDriverWait 吗?
- gradle - Groovy 中的测试类在 Kotlin 中看不到测试类
- mongodb - 如何关闭mongos服务器?
- jquery - 如果其中一个字段为空而另一个字段不为空,则无法使用 jquery 进行验证
- rest - dsRESTConnection 组件不允许我在第一次连接后更改 .username 和 .password
- python-3.x - Python 导入错误:没有名为 mysql.connector 的模块
- java - 如何以编程方式切换这些?
- ionic3 - Ionic 3 存储问题在浏览器中不起作用