2013-01-22 65 views
0

我在Webform 6.x-3.18中使用Drupal 6.28。我有一個多步驟表單設置。如果您選擇一個單選按鈕,我的一些字段只會顯示出來。在這個特定的例子中,這是一個註冊表單,其中一個問題是「你會帶客人嗎?」。如果他們選擇是,那麼一些額外的領域下降屬於他們的客人。所以這個效果很好。他們可以提交表格,一切正常。問題是,如果他們回到他們的形式進行編輯並決定單獨出席,而現在他們不會帶來客人,則客人領域會按照預期從表格中消失,但數據仍然在幕後,特別是數據庫。所以現在當我們去運行關於某些特定來賓字段的報告時,這些字段會拋出我們的報告,因爲數據仍然存在於dB中,就好像它們即使不是現在帶來的客人一樣。取決於其他領域的字段問題

任何人都可以想到處理這個問題的最佳場所嗎?我應該製作一個自定義模塊,以某種方式掛鉤到網絡表單中並捕獲它並重置所有guest域?我只是不知道處理這個問題的最佳地點。

感謝

回答

0

您可能有一些提交數據的邏輯。如果這是他們第一次提交(尚未在數據庫中),請按計劃前進。如果數據已經存在,請在該字段之前和之後進行比較。如果切斷,您可以清除該用戶的數據庫位置。

你也可以在表單代碼中有東西,所以如果沒有選中該單選按鈕,總是插入一些blank/null /,但是你將它處理到數據庫中。這樣,即使數據在那裏(如果你繼續並重寫DB中的整行),它總是在這些字段中寫爲空白。

+0

謝謝牆壁。是的,我理解這個邏輯。我想我只是不知道在哪裏做到這一點。我是否在黑客的網絡表單模塊?我對Drupal相當陌生,所以仍然試圖找到解決方法。我製作了自定義模塊,但我還是很新的。我不知道我會把這個新邏輯放到什麼文件中。 –

+0

因爲我已經跳入了Drupal代碼,這段時間已經過去了一段時間,但是看起來您可能可以在某些自定義代碼中添加該邏輯。 在webform/webform.api.php文件中的'hook_webform_submission_presave'中,它看起來像你可以直接修改$提交。 嘗試檢查那裏的單選按鈕的值,並將數據設置爲任何需要的(如果您的按鈕爲false)。 – Walls

+0

感謝人。這完全是訣竅!我已經有了一個自定義模塊,所以我利用hook_webform_submission_presave來檢查我的單選按鈕的值,然後將我的依賴字段值設置爲空數組,並且工作正常。 –