如何在Drupal 7中预填充Field Collection字段?

时间:2013-01-10 20:11:40

标签: php drupal drupal-7 drupal-field-collection

我的内容类型可以包含无限的嵌入字段集field_foo实例,每个集合包含两个字段:field_foo_barfield_foo_baz

我想修改此内容类型的节点创建表单,以使用现有节点上相同字段的值预先填充field_foo

默认情况下,节点创建表单包含:

FIELD FOO

FOO BAR [            ]
FOO BAZ [            ]

......我想设置,例如:

FIELD FOO

FOO BAR [Bar value #1]
FOO BAZ [Baz value #1]

FOO BAR [Bar value #2]
FOO BAZ [Baz value #2]

我该怎么做?我觉得我错过了一些直截了当的东西。

我试图简单地克隆hook_form_alter()中的空字段集合并更改field_foo_barfield_foo_baz值以适应,但这会导致添加/删除行和调整多个增量的问题,权重等让我觉得我正在咆哮错误的树。

2 个答案:

答案 0 :(得分:0)

由于字段集实际上是实体,您是否可以使用hook_entity_insert()来检查正在插入的实体是否是字段集合的实例,如果是,则设置值。

答案 1 :(得分:0)

hook_form_alter是执行此操作的正确方法。如果发生其他问题,那是因为您没有正确填充字段,或者因为另一个模块也在您之后编辑字段。在前一种情况下,请查看hook_node_insert中提交的格式。在模块的后一种情况change the weight中,它最后触发并确保您的更改覆盖任何其他模块。