Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms Drupal,什么';It’这是制作巨型表单的最佳方式_Forms_Drupal - Fatal编程技术网

Forms Drupal,什么';It’这是制作巨型表单的最佳方式

Forms Drupal,什么';It’这是制作巨型表单的最佳方式,forms,drupal,Forms,Drupal,我必须在drupal网站上制作一个巨大的表格,它是为旅行社准备的,是一份满意度问卷。 在填写表单时,用户选择他所做的旅行类型,然后所有字段取决于第一个答案,对于每种旅行类型,都有不同的字段需要完成 所以我的问题是做这个表单的最佳方式是什么(有12种类型的旅行,12种不同的字段集(~50个字段/类型)) 我认为webform可以与webform条件字段一起使用,但我认为webform的问题是,当我想要导出数据时,在CSV中,我将拥有所有旅行类型的所有字段,这将是不可行的。 我搜索了它,但并没有找到

我必须在drupal网站上制作一个巨大的表格,它是为旅行社准备的,是一份满意度问卷。 在填写表单时,用户选择他所做的旅行类型,然后所有字段取决于第一个答案,对于每种旅行类型,都有不同的字段需要完成

所以我的问题是做这个表单的最佳方式是什么(有12种类型的旅行,12种不同的字段集(~50个字段/类型))

我认为webform可以与webform条件字段一起使用,但我认为webform的问题是,当我想要导出数据时,在CSV中,我将拥有所有旅行类型的所有字段,这将是不可行的。 我搜索了它,但并没有找到是否可以通过编程方式隐藏csv的字段

我在互联网上发现的第二种方法是CCK,但我没有这方面的经验


您有什么建议吗?

您可以使用模块提供的钩子:

在webform模块文件夹中的
webform.api.php
中找到

您还可以通过自己的更改表单过程修改提交功能:

function hook_form_alter(&$form, &$form_state , $form_id){
  if ($form_id == 'myformid'){
    $form['#submit']= array('mycustomsubmit'); // or loop on existing to suppress only unwanted submit callbacks
  }
} 
function mycustomsubmit($form , &$form_state){
  // do your stuffs csv exports
}

也许你可以创建一个多步骤表单:这似乎是一个很好的解决方案,但使用webform创建更容易,我唯一的问题是csv导出,使用webform,我将有一个包含100多个字段行的csv,我在网上搜索,但没有找到任何修改csv导出功能的解决方案csv导出是在表单提交时启动的还是独立的?它是独立的,使用webform有一个后端,您可以导出csv,但我没有找到任何钩子来更改csv导出功能我还有最后一个问题,我必须复制这样的东西,你认为这在webform中是可能的吗?复制下一个/上一个导航?还是多检查盒@Jessyth带有多复选框的表格,如屏幕中的您需要自定义开发,我将尝试向您展示我认为在没有webform的情况下我将如何完成,hook csv data alter允许我自定义csv中的数据,但不允许自定义csv:/
function hook_form_alter(&$form, &$form_state , $form_id){
  if ($form_id == 'myformid'){
    $form['#submit']= array('mycustomsubmit'); // or loop on existing to suppress only unwanted submit callbacks
  }
} 
function mycustomsubmit($form , &$form_state){
  // do your stuffs csv exports
}