WebForm表单的克隆

WebForm表单的克隆

9月 04, 2017     liumwei

webform是用于表单配置和生成的模块。利用它,可轻松实现调查表单、报名表单、注册表单等制作。在Drupal中,安装好webform后,采用node/add/webform即可开启表单的创建,并进而实现表单字段的创建和定义。值得注意的是,随着使用场景的不断演进,我们会发现很多事先创建好的表单,其实完全可以复制克隆稍加修改后,用于其他页面的需求。但是,如何才能快速地复制克隆先前已经创建好的表单及其字段呢?

1. 最佳途径:node_clone

由于webform在表单字段创建时,需先进行node创建(node/add/webform),然后才具体定义表单所需字段。因此,采用node_clone完全可以实现已有webform表单的克隆。不仅如此,node_clone还可以复制其他类型的node。当然,实现webform克隆的,还有其他一些模块webform_shareWebform Default FieldsWebform TemplateWebform defaultsNode Export 等,但node_clone似乎使用最简单。要装这个模块,请在Drupal站点目录文件夹路径下,使用drush即可:

drush dl node_clone -y && drush en node_clone -y && drush dis webform_tabindex -y

特别说明:webform_tabindex模块必须禁用,不然会出现如下的错误:

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tabindex' cannot be null: INSERT INTO {webform_tabindex} (nid, cid, tabindex, skip) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3); Array ( [:db_insert_placeholder_0] => 1033 [:db_insert_placeholder_1] => 2 [:db_insert_placeholder_2] => [:db_insert_placeholder_3] => 0在 webform_tabindex_webform_component_insert() (行 191 在 ../sites/all/modules/webform_tabindex/webform_tabindex.module)

针对这个错误,目前没有更好的办法来解决,除非针对webform_tabindex.module进行补丁。

2. webform克隆操作:

安装node_clone之后,打开admin/content,可以看到每一条node记录,会增加一个功能连接,如下:

此时,选择要克隆的表单,点击一下“克隆”即可,如下:

现在只需要修改一下表单名称,比如“泛鹰科学社招募申请表”,然后保存即可。此时,来自旧表单的所有的字段将共享到新名称的表单中。同时,如需添加、删除webform表单字段操作,也可以进行。大功告成!