2014-02-26 37 views
0

我做了2個視圖,他們都得到了表單。第一個是基本的細節,然後添加一個數字值的文本框。表格值傳遞不使用輸入標籤

說,例如: 姓: 成員:

提交按鈕:繼續

再後來,我通過這(爲$data=array('name'=>$_POST['familyname'],'members'=>$_POST['family_members']);到控制器然後到一個新的觀點

。然後我循環這裏,

for($counter=1;$counter<$members+1;$counter++) 
{ 
echo "<input type='text' name='membername$counter'/>"; 
} 

所以之後,病人再次傳遞給另一個騙局troller功能。 但後來我的問題是,我將如何將$ name和$members值與第二個窗體中的新值一起傳遞。

不使用隱藏的輸入類型,並將它們存儲作爲其價值

回答

0

這正是sessions是。

會話是一種簡單的方法來爲單個用戶存儲唯一會話ID的數據。這可以用來在頁面請求之間保持狀態信息。會話ID通常通過會話cookie發送到瀏覽器,ID用於檢索現有的會話數據。

+0

我認爲會議應**僅用於識別信息,不存儲中間表單數據。 – Halcyon

+0

有什麼特別的原因? –

+0

我以爲$ session用於重要數據,例如用戶登錄時使用會話,因此只有登錄用戶才能訪問某些頁面。 我錯了嗎? – user3205047

0

你必須不斷傳遞所有信息。有幾種方法可以做到這一點。

容易方式是在具有序列化的第一種形式的所有信息的第二個窗體創建<input type="hidden">場。

喜歡的東西:

$first_form_data = $_POST["..."]; 
echo '<input type="hidden" name="first_form_data" 
    value="' . htmlspecialchars(json_encode($first_form_data)) . '" />'; 

我用json_encode作爲串行。您也可以使用serialize或適用於此格式的任何序列化程序。

分別爲了反序列化數據使用json_decodeunserialize


更爲複雜和涉及的解決方案將讓你在其他地方存儲數據,並通過某種形式的令牌引用它,並一起傳遞,只是令牌。如果數據集太大,您不希望隨時傳遞數據集,這可能很有用。

+0

我在哪裏初始化$ first_form_data?第二視圖?或第二個視圖的控制器? – user3205047

+0

'$ first_form_data'是我選擇的一個變量名稱,用於表示您正在收集第一個表單中的所有數據並將其注入第二個表單中。在實踐中如何實現取決於你如何將兩種形式連接在一起。如果您不確定:是否有任何代碼可以共享? – Halcyon