我正在使用控制台蛋糕烘焙从数据库中自动生成表单。但是我有一个问题,我的一个控制器不是在编辑记录后更新它,而是在数据库中创建一条新记录。
问问题
3597 次
2 回答
9
如果您使用控制台烘焙视图,您的编辑表单应该有以下行:
echo $this->Form->input('id');
如果它不存在,您应该添加它。这可以确保您保存的对象的 id 存在于发送到控制器然后发送到模型的数据中,因此它不会在数据库中创建新记录。
于 2013-05-01T12:11:59.530 回答
1
另一个可能的问题来源是表单数据不在请求中。您的更新功能可能如下所示:
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 字段回显到表单中,它都不会在其“值”属性中包含 id,并且当请求返回到操作函数时,您的保存代码将不知道怎么做,相反它会创造一个新的记录。
于 2013-09-06T16:18:46.900 回答