2011-06-02 10 views
0

在Drupal 6.20中,我構建了一個創建多頁表單(my_form_process)的函數。在一頁上,用戶可以從先前創建的地址列表中進行選擇,或創建一個新的地址。如果用戶想要創建一個新的,我使用javascript來隱藏選擇並取消隱藏地址表單(地址,城市狀態zip等)。爲了確保用戶提供所需的數據,我有一個驗證函數(my_form_process_validate),如果字段爲空,我會設置錯誤。問題是,當頁面驗證失敗時,my_form_process重新繪製帶有驗證錯誤的表單,但默認回到「從先前創建的地址列表中選擇」,並且帶有錯誤的「創建新的」表單元素仍然是隱。在Drupal 6中,構建多頁表單的函數如何查看驗證函數的結果?

如何判斷構建表單的my_form_process,驗證失敗時顯示「create new」div,並隱藏「select old」div?我試過設置一個$ form ['storage']變量,但my_form_process似乎沒有看到它。


這裏是更多一些信息:

我嘗試添加一個$ form_state [「validation_status」] =「錯誤」在驗證例程,但仍發現值未在使用的$ form_state陣列中當發現錯誤時形成函數。

但是,當沒有錯誤時,該值可用。 (線索)

所以,只是踢,我從驗證例程中刪除了「form_set_error」行,現在值是可用的。

所以,現在,我必須設置

$form_state['validation_error'] = '<ol>'; 
$form_state['validation_status'] = 'error'; 
$form_state['validation_error'] .= '<li>' . t('address cannot be blank') . '</li>'; 
$form_state['validation_error'] .= '</ol>'; 

然後在表格功能我可以測試$ form_state [ 'VALIDATION_ERROR'],如果 '錯誤',然後使用

drupal_set_message($form_state['validation_error'],$form_state['validation_status']); 

要顯示該消息,然後適當地設置div的顯示屬性。

當然,這似乎是一個「form_set_error」過程中的錯誤,但我是Drupal/PHP領域的新手,所以我不確定自己在做什麼。

回答

0

您應該能夠通過$ form_state變量在表單函數,驗證函數和提交處理函數之間來回傳遞值。這可能有幫助(如果你還沒有看過這個)http://drupal.org/node/144132#multistep

+0

感謝您的鏈接謝恩 - 它幫助了一些。我想通過嘗試一些其他的選擇來解決它。我會在下面分享他們。 – MojoMark 2011-06-02 19:46:46

+0

將我的方法作爲消息正文中的一個編輯發佈,以保持未答覆的狀態。 – MojoMark 2011-06-02 19:56:05