cakephp 2,编辑表单创建一条新记录而不是更新它
答
如果你已经使用控制台烤您的看法,您的编辑形式应该有这样一行:
echo $this->Form->input('id');
如果它不存在,你应该添加它。这可以确保发送给Controller的数据中存在您保存的Object的id,然后发送到Model,因此它不会在数据库中创建新记录。
答
可能出现的问题的另一个来源是表单数据不在请求中。您更新功能可能看起来是这样的:
function update($id=null) {
//if the data has come back from the form...
if($this->request->is('post') || $this->request->is('put')) {
//Your saving code goes here.
}
//else, the form is being requested initially, and the id is coming through
//as a get parameter.
else {
$this->request->data = $this->Model->findById($id);
}
}
我已经忘记了此行陷入麻烦了过去:
$this->request->data = $this->Model->findById($id);
在有条件的第二种情况。如果你忘记了这一点,那么无论你是否将隐藏的id字段回显到表单中,它的“value”属性中都不会包含该id,并且当请求返回到动作函数时,保存的代码将不会知道该怎么做,而是会创造一个新纪录。
在保存/更新形式如$ this-> modelName-> id'之前传递表行'id'。 – MaNKuR 2013-05-01 12:06:14