表单数据写入步骤
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)