我正在構建一個帶有Codeigniter的調查,並且它變得很麻煩,所以我想將它分成幾個部分(大約5個)。Codeigniter中的多部分表格
如果我想讓每個部分驗證,並在用戶點擊「下一步」後提交給數據庫,那麼最好的方法是什麼?我以前從未做過多步驟的過程。
對noob的任何建議? :)
我正在構建一個帶有Codeigniter的調查,並且它變得很麻煩,所以我想將它分成幾個部分(大約5個)。Codeigniter中的多部分表格
如果我想讓每個部分驗證,並在用戶點擊「下一步」後提交給數據庫,那麼最好的方法是什麼?我以前從未做過多步驟的過程。
對noob的任何建議? :)
CI沒有內置多頁表單支持內容管理系統(如Drupal)的方式。
最好的方法是創建五個單獨的窗體,每個窗體都有自己的form_validation數組,控制器函數和視圖。當用戶成功提交表單1時,驗證表單,將(部分)數據輸入到數據庫中,然後重定向到第二個表單。包括在隨後的形式的URL數據庫ID號碼或您自己的自定義交易ID編號,讓你知道你指的是哪條記錄:
http://www.mysite.com/mycontroller/form1
http://www.mysite.com/mycontroller/form2/transaction_id
CI的文檔是很大的,這種形式驗證庫將爲您提供大部分途徑:http://codeigniter.com/user_guide/libraries/form_validation.html
我完全不同意。驗證後將整個事件保存在會話中,然後在確認頁面上顯示所有結果。如果用戶確認它,然後保存在相關數據庫表中實際回答的每個字段。
夏天的想法是對錯誤或從用戶有意輸入錯誤開放。沒有什麼可以阻止他們爲http://www.mysite.com/mycontroller/form2/transaction_id添加書籤或者故意更改transaction_id。
我已經使用夏天的想法構建了一個多頁表單,另一個使用codeigniter的會話類,但將會話存儲在數據庫中,另一個將每個頁面保存到數據庫表,但使用登錄系統跟蹤用戶。最後的選擇是最強大的,但是是一個真正的痛苦。會話系統是最好的。
使用這樣的會話數據臨時存儲大約100個值是不是一個好主意? – 2010-09-11 16:14:06
我不這麼認爲。請注意,每次發佈會話都會將會話重新創建回服務器,如果您擁有大量的同時用戶和每個用戶的大型會話數組,則可能會產生可伸縮性問題。 – Kris 2010-09-22 23:56:18
這真是太棒了,但是如果加載的視圖來自另一個控制器,會發生什麼?也就是說,如果您選擇了x個選項之一來達到目的,那麼驗證框架就會失敗。 – 2010-09-24 12:24:48