2011-03-03 71 views
0

當您使用CakePHP的表單元素,像這樣:CakePHP:如果表單沒有驗證,表單中仍然有數據?

echo $this->Form->input('User.first_name'); 

你開始一個空白的領域。當你輸入你的名字John並提交表單時,如果表單沒有生效,當你返回頁面修復你的驗證錯誤時,名稱John仍然存在。這很方便,因爲你可以修復你的錯誤,而不必重新輸入你正確的部分。

它是如何得到恢復成價值?

我需要知道這一點,因爲一旦成功提交表單,你離開頁面,回來的形式是空白的一次。

我保存名稱作爲會話,以便我能做到這一點,而不是:

$first_name = $this->Session->read('Cart.User.first_name'); 
echo $this->Form->input('User.first_name',array('value'=>$first_name)); 

現在,如果你只管鬧頁面,回來,這個名字仍然會在那裏,但是,打破了原來的邏輯防止它從表達式無法驗證時將輸入的內容放回。


讓我給你舉個例子。

我創造我的名字元素,如:

$first_name = $this->Session->read('Cart.User.first_name'); 
echo $this->Form->input('User.first_name',array('value'=>$first_name)); 

我正確地填寫表格和我帶到一個最後結賬頁面。我發現我拼錯了我的名字Jhon。所以我點擊了編輯按鈕,然後回到表單中,因爲我手動設置了value,我的數據仍然存在。我正確地重新鍵入我的名字爲John並提交表單。對於一些其他原因,表單沒有驗證,我帶回的形式,但不是顯示John喜歡它最初會,它現在顯示Jhon再次,因爲當我手動設置value我重寫使用默認的任何仍在會議中。

所以,如果我知道的CakePHP如何把數據傳回的形式,當它不驗證,我可以把會話數據回以同樣的方式,而不覆蓋默認。

回答

2

的數據被傳遞迴在POST數據呼叫的形式。 FormHelper auto-magic元素使用該數據來填充字段的值屬性。如果您離開該頁面,則帖子信息不會被傳遞。

您需要保存$這個數據塊的會話值,以保持它,而從頁面移動到頁面。

+0

謝謝,我將其保存在一個會話,但手動設置從我的會話值導致AUTOMAGIC數據人口沒有工作。這正是我想在我的問題中解釋的。當有人回到頁面時,我嘗試用會話中的數據手動設置$ _POST,但這也不起作用。 – 2011-03-03 21:32:47

+0

啊哈!我必須使用我在會話中保存的數據來設置值$ this-> data,然後才能呈現頁面並且它可以工作! – 2011-03-03 21:38:07

+0

太棒了!我只是想說明這一點。教一個人去釣魚... – 2011-03-04 00:04:35