cakephp 2,编辑表单创建一条新记录而不是更新它

问题描述:

我使用控制台蛋糕烘焙从数据库中自动生成表单。 我有一个问题,但我的控制器之一,而不是更新记录编辑后,正在创建一个新的记录到数据库中。cakephp 2,编辑表单创建一条新记录而不是更新它

+1

在保存/更新形式如$ this-> modelName-> id'之前传递表行'id'。 – MaNKuR 2013-05-01 12:06:14

如果你已经使用控制台烤您的看法,您的编辑形式应该有这样一行:

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,并且当请求返回到动作函数时,保存的代码将不会知道该怎么做,而是会创造一个新纪录。