在非CCK Drupal表单中添加“另一项”

时间:2009-12-02 23:12:29

标签: drupal cck form-api

Drupal的CCK具有允许单个CCK字段通过“添加另一个项目”按钮接受多个值的便利功能,该按钮导致节点中的数据数组。

我想知道是否有任何简单的方法可以将这种情况用于我drupal_get_form调用的非CCK表单。我宁愿不用多步形式技术重新发明轮子。

有人这样做过吗?

3 个答案:

答案 0 :(得分:6)

如果他们包含一个更简化的示例会很好,但是this Introduction to AHAH in Drupalthis post on adding dynamic form elements using AHAH应该涵盖几乎所有你需要的东西(不幸的是,这很多)。

CCK这样做的方式(主要在content.node_form.inc中的content_add_more_js())有点复杂,因为它们需要满足不同字段类型的泛化,以及添加一些额外的东西允许平滑的tablesort拖放功能。因此,除非你需要后者,否则我宁愿不以它为例,因为它有点令人困惑;)

答案 1 :(得分:3)

答案 2 :(得分:2)

只是一个答案的存根,对不起。如果没有其他人会给你一个更好的答案,我有时间,明天我会详细说明。

我相信功能是通过将drupal行为(来自Drupal标准js库)附加到您正在考虑的字段来完成的。如果我错了,那么它只是一个“ad-hoc”jQuery函数。

然而,这很容易! ;)棘手的是,功能是通过AJAX实现的,而不是简单地生成一个额外的表单字段客户端。之所以如此,是因为表单API必须完全重新生成表单,否则 - 在提交时 - 将最初忽略最初未发送到浏览器的其他字段(这是为了防止注入)。

HTH至少有点!很抱歉这么简洁。