當您使用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如何把數據傳回的形式,當它不驗證,我可以把會話數據回以同樣的方式,而不覆蓋默認。
謝謝,我將其保存在一個會話,但手動設置從我的會話值導致AUTOMAGIC數據人口沒有工作。這正是我想在我的問題中解釋的。當有人回到頁面時,我嘗試用會話中的數據手動設置$ _POST,但這也不起作用。 – 2011-03-03 21:32:47
啊哈!我必須使用我在會話中保存的數據來設置值$ this-> data,然後才能呈現頁面並且它可以工作! – 2011-03-03 21:38:07
太棒了!我只是想說明這一點。教一個人去釣魚... – 2011-03-04 00:04:35