我希望我在CakePHP2中創建的表單在沒有發佈數據時顯示爲空,但如果會話密鑰Person.id存在,則使用模型中的數據填充。這裏是我的代碼:在會話中使用ID來填充CakePHP中的表單字段
function about() {
// Make session key for debug purposes
$this->Session->write("Person.id",1);
if($this->request->is('post')) {
debug("post");
} else {
debug("not post");
// Use the value in the session Person.id to find the
// record in the Person model
$this->params->data = $this->Person->findById($this->Session->read("Person.id"));
}
}
大部分上述工作。如果我訪問視圖時未發佈任何數據,則表單將按照預期從Person
模型填充數據。
但是,如果我發佈表單,當我期待post
時,仍然收到調試消息not post
。
如果我註釋掉分配數據到$this->params->data
的行,則提交表單會給我正確的調試消息post
,但我不明白爲什麼會發生這種情況。
如果有$this->params->data
填充意味着相同的Cake作爲表單帖子,那麼我想如何檢查一個真正的,真正的表單帖子?
更新:如果我改變if($this->request->is('post'))
到if($this->request->data)
那麼它的工作原理正是我希望它....但我仍然不明白爲什麼。
很好的解釋,謝謝! Person.id實際上是一個查詢的結果,該查詢根據提交的電子郵件地址在「Person」模型中搜索記錄的「id」。我使用上面的代碼作爲多階段提交表單的一部分。數據在提交每個步驟時都會被放入數據庫中,但是如果用戶決定返回到之前的某個階段,我想要一種將數據提取回表單的方法。 – Joseph