2010-06-04 100 views
3

我想知道處理表單處理的最佳做法是什麼?處理表單處理的最佳做法

在我來說,我做這樣的事情:

  • 如果用戶沒有submited形式
    • 顯示形式
  • 其他
    • 如果有是表格錯誤
      • 顯示錯誤
      • 再次
    • 別的
      • 顯示一則成功消息
      • 顯示形式
      • (和)顯示形式再次

我問題是我重複表單的HTML代碼3次,我不認爲這是一個很好的做法(長文件,難以閱讀)。

+0

您使用什麼技術來處理表單? – skyfoot 2010-06-04 15:03:41

+0

我通常使用PHP。 – Psyche 2010-06-04 15:18:13

+1

我已將PHP標記添加到問題中。您可能會以這種方式獲得更具體的回覆。 – 2010-06-04 18:07:33

回答

-1

鑑於在每種情況下您都顯示錶單,您是否可以默認顯示相同的表單,然後添加錯誤消息等附加內容?

您還在使用哪些其他技術?

2

您的工作流看起來正確。我不明白爲什麼你需要重複表單的HTML代碼。重組您的代碼,以便成功消息顯示在表單頂部(如果存在),並且錯誤顯示在輸入框旁邊(如果存在)。在(PHP?)文件的頂部,處理所有內容並設置將在下面的表單中顯示的變量。

1

您可以使用相同的表單代碼,並在窗體上方顯示錯誤/成功消息。

0

您可以通過以下兩種打破你的腳本:

  • 一個顯示形式

  • 一個獲取表單數據,對其進行檢查並返回錯誤或成功消息

5

你應遵循Post/Redirect/Get模式來防止表單提交重複。

您可以用這種方式整合,錯誤處理和成功的消息顯示該模式:

if POST_REQUEST: 
    ERRORS = VALIDATE_FORM() 
    if ERRORS IS EMPTY: 
    PROCESS_REQUEST 
    REDIRECT TO <Successful URL> 

DISPLAY_FORM(ERRORS) 

這些都是可能的方案:

  • 獲取的形式網址:
    POST_REQUEST是假的,所以你只是顯示沒有錯誤的表單(所以一個正常的空表格)
  • 表單提交有錯誤:
    POST_REQUEST是真實的,你驗證表單。在這種情況下,ERRORS變量中可能會返回一些錯誤(可能是一個數組)。 ERRORS變量爲而不是爲空,因此您只需顯示帶有錯誤消息的表單
  • 正確的表單提交:
    POST_REQUEST爲true並驗證表單。由於這次表單是有效的ERRORS變量將是空的,你執行重定向到<成功的URL >這將顯示成功的消息給用戶。

使用此模式可防止用戶在正確提交表單後刷新頁面時再次發送表單數據。

Django Framework建議以這種方式處理表單。

的一個好方法,以處理形式顯示錯誤是有VALIDATE_FORM()函數返回一個陣列的錯誤,其中每個鍵是字段的名稱和相應的項目是錯誤消息的數組。

一般形式錯誤(不與指定字段關聯)應該有一個emtpy鍵。

這種方式,你可以,例如,顯示錯誤,這種方式在DISPLAY_FORM()函數:

<ul class="errors"><?php foreach(ERRORS['field_name'] as $error) { echo "<li>$error</li>"; } ?></ul> 
<input name="field_name" type="text" ... /> 
1

看,這是一個雞蛋一樣簡單!
只要把同樣的動作在不同的順序:

  • 如果用戶submited形式
    • 如果有形式錯誤
      • 填寫錯誤陣列
    • 其他
      • 個記錄數據到數據庫
      • 302 regirect的,因爲它需要通過HTTP標準
      • 出口
  • 如果我們有一些錯誤
    • 顯示錯誤
    • 填充表單字段值
  • 顯示錶格

如果你不能沒有一個成功的消息(在我看來相當無用的東西),你可以使用get參數(少首選)或會話(最佳)

哎呀它顯示!這是一箇舊的。

0

我還會注意到,使用模式和HTML5是避免使用無效數據提交表單的一個很好的做法。