【发布时间】:2011-11-10 15:03:10
【问题描述】:
我有一个带有字段集合“field_definition”的 $form,其中包含 2 个具有无限基数的字段。我可以通过在 hook_form_alter 中执行此操作来创建字段:
$field_definition_template = $form['field_definition']['und'][0];
for($k=0;$k<count($column_names);$k++)
{
$form['field_definition']['und'][$k] = $field_definition_template;
$form['field_definition']['und'][$k]['#delta'] = $k;
}
问题是名称错误,ID 错误以及几乎所有其他内容。有没有办法正确地做到这一点?
【问题讨论】:
-
嘿,克里斯,你的名字和 ID 有误是什么意思?例如,如果您没有从
$form_state['values']获得您所期望的结构(也称为名称和 ID),请确保您设置了$form['#tree'] = TRUE。否则树结构会变平。我无法真正得到你想要在这里实现的目标并且不起作用...... -
这很难解释,但我基本上是在尝试为服务器端的无限基数字段集合创建字段。默认情况下总是创建一个字段集合,但要添加另一个字段集合,您需要更改 delta 和一堆其他数据,例如 id。
-
这个字段是什么类型:它是标准的 FAPI 还是 CCK?如果它是标准 FAPI,那么您的代码看起来不错,您应该得到您想要的:一堆额外的字段,取决于
count($columng_names)。在这种情况下是生成的字段与默认字段不同的问题吗?我只是想更好地了解您的问题。 -
这些是我试图在 drupal 7 中克隆的 CCK 字段。(CCK 现在在核心中)
-
是的,你说得对,CCK 现在是核心。我真的不明白为什么你的代码不起作用。除非这些字段是某种特殊类型并且需要设置其他一些参数,否则该代码应该可以解决问题。顺便说一句,“原始”类型是什么类型,您是否使用特殊的小部件来显示它?例如。文件有文件上传和图片。