【问题标题】:Field Collection, adding new elements to it in form字段集合,在表单中添加新元素
【发布时间】: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 现在是核心。我真的不明白为什么你的代码不起作用。除非这些字段是某种特殊类型并且需要设置其他一些参数,否则该代码应该可以解决问题。顺便说一句,“原始”类型是什么类型,您是否使用特殊的小部件来显示它?例如。文件有文件上传和图片。

标签: drupal drupal-7


【解决方案1】:

您需要使用hook_field_presave() 来将值添加到字段本身。有时在字段上使用 Form API 确实有效,但如果您切换到直接使用 Field API 会更简洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2012-10-14
    • 2018-02-18
    • 2011-07-15
    • 2022-12-18
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多