我知道我可以做 <input name="foo[]">
之类的事情,但是是否可以做 <input name="foo[bar]">
之类的事情并让它在 PHP 中显示为 $_POST['foo']['bar']
?
我问的原因是因为我正在制作一个巨大的表单元素表(包括 <select>
有多个选择),我想为我要发布到的脚本干净地组织我的数据。我希望每列中的输入元素具有相同的基本名称,但具有不同的行标识符作为数组键。那有意义吗?
编辑: 我已经试过了,但显然 Drupal 正在干扰我正在尝试做的事情。我以为我只是把我的语法弄错了。 Firebug 告诉我,我的输入名称完全像这样构造,但我的数据返回为 [foo[bar]] => data
而不是 [foo] => array([bar] => data)
。
编辑 2: 看来我真正的问题是我假设 $form_state['values']
在 Drupal 中将具有与 $_POST
相同的数组层次结构。我不应该假设 Drupal 会如此合理和直观。我很抱歉浪费你的时间。你可以去做你的事。
原文由 DLH 发布,翻译遵循 CC BY-SA 4.0 许可协议
您也可以在 Drupal 中轻松完成此操作。您必须记住的重要事情是将表单“#tree”参数设置为 TRUE。给你一个简单的例子:
现在,如果您在 MYMODULE_form_submit(\(form, &\)form_state) 中打印_r() $form_state[‘values’],您将看到如下内容: