【问题标题】:How to perform add action in a form only one time, after update the record everytime每次更新记录后,如何仅在表单中执行一次添加操作
【发布时间】:2013-05-22 06:12:17
【问题描述】:

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

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 我使用了一个表单元素。

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

【问题讨论】:

    标签: forms cakephp element


    【解决方案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

    【讨论】:

    • @SibinF 这真的取决于你的情况;如果您想编辑,您在哪里检索现有数据?您如何决定是要编辑还是插入记录?您如何“选择”要编辑的正确记录?
    猜你喜欢
    • 2020-04-19
    • 2016-09-02
    • 2021-12-17
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多