怎么对模块的单独字段进行存储呢?
比如我在后台新建了一个jinzhixiugai字段,格式随便,例子以text为例,如下图
1、在前端任意页面存储这个字段值,随便一个页面就找他的内页吧,demo/show.html
myform3322:是我随便取的,保证form的三处代码都一样
jinzhixiugai:这个是字段的名称
{dr_url('demo/save/index', ['id'=>$id])}:是我新建的控制器地址,后面会说
效果如下:(现在不能点存储)
2、处理存储程序
新建控制器:dayrui/App/Demo/Controllers/Save.php
_module_init(); // 哪些存储字段 $field = [ 'jinzhixiugai' => $this->module['field']['jinzhixiugai'] ]; $id = intval($_GET['id']); // 接收记录id号 $data = $this->content_model->get_data($id); if (!$data) { $this->_msg(0, dr_lang('%s内容(#%s)不存在', $this->module['name'], $id)); } // 这里可以判断权限,判断哪些人可以修改 // 接收post存储值 if (IS_POST) { // 初始化自定义字段类 \Phpcmf\Service::L('Field')->app(APP_DIR); // 字段验证 list($post, $return, $attach) = \Phpcmf\Service::L('Form')->validation(\Phpcmf\Service::L('input')->post('data', false), null, $field, []); // 输出错误 if ($return) { $this->_json(0, $return['error'], ['field' => $return['name']]); } // 存储主表数据 \Phpcmf\Service::M()->table_site(APP_DIR)->update($id, $post[1]); // 存储哪个表具体看你字段定的哪里的,这里是主表字段,所以我写了存储主表的方法, // 附件归档 SYS_ATTACHMENT_DB && $attach && \Phpcmf\Service::M('Attachment')->handle(isset($data['uid']) ? $data['uid'] : $this->member['id'], \Phpcmf\Service::M()->dbprefix($this->content_model->mytable).'-'.$id, $attach); $this->_msg(1, '存储成功'); } else { $this->_msg(0, '请用POST提交'); } } }
以上代码需要有一定的php基础才能看懂,关键部分我已经注释了
3、这时候点存储按钮就会提示存储成功
后台也可以看到他的新值了