2012-05-09 67 views
0

好吧,這可能聽起來很簡單,但有一個問題。我會盡力解釋這種情況。Zend框架提交2個表單提交1個表格

我有一個頁面,用佈局構建,在中間有一個2按鈕和一個正常形式的視圖。 2個按鈕用於在兩個輸入表單之間切換。當提交被按下時,兩個表單都被提交。第一種形式是用於一般信息,第二種形式用於在需要時將信息與信息一起上傳。

現在爲了避免這個問題爲什麼不使用一種形式?這是一個請求,以這種方式保持兩個分離。

所以我正在考慮去2個視圖,其中前2個按鈕的行爲就像一個提交,創建與表單數據的POST請求,但實際上並沒有提交給數據庫。然後重定向到您可以上傳圖片的第二個視圖。

然後當實際的提交按鈕被按下時,我希望收集到的所有數據都寫入數據庫。

基本上它就像一個帶有2個選項卡的頁面,每個選項都有一個窗體,並且只有1個提交按鈕可以在兩個選項卡上提交窗體。

我只是無法理解如何創建這2個按鈕來存儲發佈數據,然後讓'最終'提交按鈕使用先前的發佈數據,然後使用其他表單數據創建新的組合發佈數據存儲在數據庫中。

任何人都有一個想法如何做到這一點?我是否正確地接近或者有更簡單或更清潔的方法來做到這一點?

在此先感謝!

+2

我不確定你可以用1個按鈕提交2個表單,除非你打算使用javascript&ajax或合併所有數據。您可以創建一個表單,並通過兩個可視選項卡分割它。像這樣想。 HTML中的一個長表單,但通過CSS,您可以通過兩個選項卡直觀地表示它。否則,您將提交2個帶2個按鈕的表單,但在第一個表單上,您將數據保存在服務器上的會話中,並等待提交第二個表單以保存到數據庫。與一些結賬購物車不同,您可以在一個頁面(或選項卡)上運輸表格並在另一個頁面上進行結算。 – jmbertucci

回答

1

這裏有很多選項,一個選項是創建一個表單並將兩個單獨的部分添加爲SubForms,即Zend_Form_SubForm的實例。然後,您可以單獨設計窗體樣式,選中它們,但保留一個提交按鈕。另外,當您提交時,表單數據將被分成每個子表單的數組元素。

你可以看到更多的關於這個位置:

http://framework.zend.com/manual/en/zend.form.advanced.html#zend.form.advanced.multiPage

另一種解決辦法我喜歡用一個動作助手加入窗體的過程分爲兩個頁面,網址類似於上述但將表單信息存儲在會話對象中,直到兩者都得到驗證,然後同時處理這兩個表單。

http://framework.zend.com/wiki/display/ZFPROP/Zend_Controller_Action_Helper_Multiform+Proposal+-+Simon+Mundy

http://framework.zend.com/wiki/pages/viewpage.action?pageId=42130

希望這會有所幫助。

+0

謝謝你的建議,我嘗試使用行動助手作爲你的擁塞,它完美地爲我想要做的事情。 –