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
Drupal 字段取决于其他字段的问题_Drupal_Drupal 6_Drupal Webform - Fatal编程技术网

Drupal 字段取决于其他字段的问题

Drupal 字段取决于其他字段的问题,drupal,drupal-6,drupal-webform,Drupal,Drupal 6,Drupal Webform,我正在使用Drupal6.28和WebForm6.x-3.18。我有一个多步骤的表单设置。仅当您选择单选按钮时,“我的某些字段”才会显示。在这种情况下,这是一份登记表,其中一个问题是“你会带客人来吗?”。如果他们选择“是”,则会下拉一些与他们的来宾相关的附加字段。所以这很有效。他们可以提交表格,一切正常。问题是,如果他们返回表单进行编辑并决定单干,而现在他们没有带来来宾,来宾字段将按预期从表单中消失,但数据仍在幕后,特别是在数据库中。因此,现在当我们在一些特定的来宾字段上运行报告时,这些字段会丢

我正在使用Drupal6.28和WebForm6.x-3.18。我有一个多步骤的表单设置。仅当您选择单选按钮时,“我的某些字段”才会显示。在这种情况下,这是一份登记表,其中一个问题是“你会带客人来吗?”。如果他们选择“是”,则会下拉一些与他们的来宾相关的附加字段。所以这很有效。他们可以提交表格,一切正常。问题是,如果他们返回表单进行编辑并决定单干,而现在他们没有带来来宾,来宾字段将按预期从表单中消失,但数据仍在幕后,特别是在数据库中。因此,现在当我们在一些特定的来宾字段上运行报告时,这些字段会丢弃我们的报告,因为数据仍然存在于数据库中,就好像它们带来了一个来宾,即使它们现在没有

有人能想出处理这个问题的最佳地点吗?我是否应该创建一个自定义模块,以某种方式钩住webform并捕获它并重置所有来宾字段?我只是不知道最好的处理方法


谢谢

您可以对提交数据有一些逻辑性。如果这是他们第一次提交(尚未在DB中),请按计划进行。如果数据已经存在,请对该字段进行前后比较。如果将其关闭,您可以为该用户清除数据库斑点


您还可以在表单代码中包含一些内容,因此如果未选中该单选按钮,请始终在DB中插入一些空白/null/不管您如何处理它。这样,即使数据之前就在这些字段中,它也总是以空白的形式写入(如果您继续在DB中重写整行的话)。

。是的,我明白逻辑。我想我只是不知道该在哪里做。我是在破解网络表单模块吗?我对Drupal还比较陌生,所以仍然在努力找到自己的路。我已经做了自定义模块,但还是很新。我甚至不知道我会把这个新的逻辑放进什么文件中。我跳入Drupal代码已经有一段时间了,但看起来您可能可以将这个逻辑作为一些自定义代码添加进去。在webform/webform.api.php文件的
hook\u webform\u submission\u presave中,您可以直接修改$submission。尝试检查单选按钮的值,并将数据设置为所需的任何值(如果您的按钮是错误的)。谢谢。这完全成功了!我已经有了一个自定义模块,所以我使用hook_webform_submission_presave来检查我的单选按钮的值,然后将依赖字段的值设置为空数组,这样就行了。