每次更新记录后,如何只在表单中执行添加操作一次

时间:2013-05-22 06:12:18

标签: forms cakephp element

我有一个表单元素。当我单击提交按钮时,它会将数据添加到表中。 这工作正常。但是我的需要是只在第一次向表中添加数据,每次提交数据后都应该更新。我们可以这样做吗?

function add(){
  if(!empty($this->data)){
    $this->loadModel('Defineroute');
    $this->Defineroute->create();
    $this->Defineroute->save($route_data); //route_data is data from the form
  }
}

我还有一个疑问,我在控制器中有一个view.ctp我有一个view()函数。但是在view.ctp中我使用了一个表单元素。

我们如何在控制器中为该元素编写函数?当我尝试编写函数时,它显示错误视图..

1 个答案:

答案 0 :(得分:1)

CakePhp根据您所在的数据中是否存在主键('id')确定是否更新现有记录或插入新记录保存;

这将插入一条新记录:

$route_data = array(
    'Defineroute' => array(
        'name' => 'I am a new record'
    )
);

$this->Defineroute->save($route_data);

这将更新现有记录;

$route_data = array(
    'Defineroute' => array(
        'id'   => 123,
        'name' => 'I will update record with ID 123'
    )
);

$this->Defineroute->save($route_data);

要在单个表单中容纳此内容,请在视图/元素中创建表单,如果您正在编辑现有记录,则只为id字段添加输入

另见Saving your data