文档手册

表单数据写入步骤

2024-05-14 09:20:13


前端点提交按钮会提交到


 /App/Form/Controllers/Doca.php

//发布内容
public function post() { 
    //这里可以处理数据...
    //处理完数据调用父类的_Home_Post()方法
    $this->_Home_Post();
}


接着进入他的父类  /App/Form/Control/Home/Form.php

// 添加内容
protected function _Home_Post() {
    //...
    // 调用Table类的_Post方法
    list($tpl) = $this->_Post(0);
    //...
}


他的父类 /dayrui/Fcms/Core/Table.php

/**
   * 提交内容
   * $id      内容id,新增为0,否则视为修改
   * $draft   草稿数据
   * $is_data 将内容数据返回到data数组里面
   * $is_post 强制post执行
   * */
  protected function _Post($id = 0, $draft = [], $is_data = 0, $is_post = 0) {

      //...
          
          // 格式化数据
          $post = $this->_Format_Data($id, $post, $id ? $data : []);
          // 保存数据
          $rt = $this->_Save($id, $post, $id ? $data : []);
      //...
  }


//他这里会先调用子类的钩子函数_Format_Data 格式化数据,然后调用_Save保存数据


钩子函数 /App/Form/Control/Home/Form.php 在这里,当然我们子类doca.php中如果实现了这个函数,就会调用子类的了,

这里主要初始化一些字段的默认值比如IP,时间等,我们也可以修改字段的值

// 格式化保存数据 保存之前
protected function _Format_Data($id, $data, $old) {
   
    // 审核状态
    $data[1]['status'] = $this->_get_auth_value('post_verify', $this->member) ? 0 : 1;

    // 默认数据
    $data[0]['uid'] = $data[1]['uid'] = (int)$this->member['uid'];
    $data[1]['inputip'] = \Phpcmf\Service::L('input')->ip_info();
    $data[1]['inputtime'] = SYS_TIME;
    $data[1]['tableid'] = $data[1]['displayorder'] = 0;

    return $data;
}


最后会进入/dayrui/Fcms/Core/Table.php保存函数内保存数据:


/**
 * 保存内容
 * $id      内容id,新增为0
 * $data    提交内容数组,留空为自动获取
 * $old     老数据
 * $func    格式化提交的数据 提交前   
 * $func    格式化提交的数据 保存后
 * */ 
protected function _Save($id = 0, $data = [], $old = [], $before = null, $after = null)