栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > 齐博CMS

表单器新增与修改 - 齐博CMS之X1

齐博CMS 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

表单器新增与修改 - 齐博CMS之X1

表单器中新增加 与 修改是类似的,他们都要用到类的属性
`protected $form_items;`
没有使用函数的话,就可以直接在属性中附值,比如

protected $form_items = [
['text', 'title', '标题'],
['text', 'keywords', 'SEO关键字'],
['text', 'descrip', '分享描述'],
['jcrop', 'picurl', '分享图片'],
['text', 'template', '模板路径','路径要包含风格名,只能放在index_style目录下,比如:“qiboxx/index/alonepage/pc_index.htm”'],
['radio', 'status', '是否启用', '', [1 => '启用', 0 => '禁用'], 1],
['ueditor', 'content', '内容'],
];


如果涉及到函数的话,就需要在方法里边赋值,如下:

$this->form_items = [
['select','fid', '所属分类', '',getsort()], //因为getsort()是函数,只能在方法里边定义
['text','name', '插件名称', ''],
['static','keywords', '插件关键字', ''],
['radio','ifopen', '启用或禁用', '',['关闭系统','启用系统']],
['textarea','about', '介绍', ''],
['number','list', '排序值', ''],
['icon','icon', '图标', ''],
];


文件中 `applicationcommontraitsAddEditList.php` 的 `add()` `edit()` 这两个方法仅只是示范.

public function add() {
return $this -> addContent();
}

public function edit($id = null) {
if (empty($id)) $this -> error('缺少参数');
$info = $this -> getInfoData($id);
return $this -> editContent($info);
}


add()方法中的核心是addContent()方法,我们来看看他的代码

protected function addContent($url = 'index', $vars = []) {
// 保存数据
if ($this -> request -> isPost()) {
if ($this -> saveAddContent()) {
$this -> success('添加成功', $url);
} else {
$this -> error('添加失败');
}
}
$template = $this->get_template('',$this->mid); //如果模板存在的话,就用实际的后台模板
if (empty($template)) {
$template = $this->get_template('admin@common/wn_form');
}
$this->assign('mid',$this->mid);
$this->assign('f_array',$this -> form_items);
$this->assign('tab_ext',$this->tab_ext);
return $this->fetch($template,$vars);
}

里边包含了表单的显示与数据的处理

*****


add() edit() 这两个方法, 还是推荐大家重写, 这样代码的可读性会更好些.
重写 add() 方法的原因,有3种情况,
一种是对POST提交数据重新做处理,
另一种是对显示的表单数据做特殊处理,
最后一种,就同时需要对表单的显示数据及提交数据都要做处理.

针对第一种情况,比较省事的做法,一般是按如下处理

public function add() {
if ($this->request->isPost()) {
$data = $this->request->post();
if (!empty($this -> validate)) { //验证数据
$result = $this -> validate($data, $this -> validate);
if (true !== $result) $this -> error($result);
}
if($data['title']==''){
$this->error('用户组名称不能为空!');
}
if(GroupModel::create($data)){
$this->success('创建成功 ', url('index') );
} else {
$this->error('创建失败');
}
}
return $this -> addContent();
}

即在 `return $this -> addContent();` 的前面劫持掉POST数据,终断下面的操作

针对第二种情况,比较省事的做法,一般是按如下处理


public function add(){
$this->tab_ext['page_title'] = '添加充值卡';
$this->form_items = [
//['money','rmb','充值卡面额'],
['number','money','充值卡积分个数'],
['radio','sncode_type','充值卡密码复杂度','',['纯数字','纯字母','数字+字母'],2],
['number','sncode_leng','密码长度'],
['number','num','批量生成多少个'],
];
return $this->addContent();
}

即在 `return $this -> addContent();` 的前面添加表单参数.如果参数没用到函数的话, 可以直接在类的属性又或者是 `_initialize()` 初始化类的方法里边定义也是一样的


第三种情况,就是同时要修改表单属性与处理提交数据的时候,可以参考下面的

public function add(){

if ($this -> request -> isPost()) {
$data = $this->request->post();
if ($data['money']<1&&$data['rmb']<1) {
$this->error('面额不能小于1');
}
$ck = 0;
for ($i=0;$i<$data['num'];$i++){
if ($this -> model -> create($data)) {
$ck++;
}
}
if ($ck) {
$this->success('操作成功','index');
}else{
$this->error('生成失败,请重新生成一次');
}
}
$this->tab_ext['page_title'] = '批量生成充值卡';
$this->form_items = [
//['money','rmb','充值卡面额'],
['number','money','充值卡积分个数'],
['radio','sncode_type','充值卡密码复杂度','',['纯数字','纯字母','数字+字母'],2],
['number','sncode_leng','密码长度'],
['number','num','批量生成多少个'],
];
return $this->addContent();
}



修改其实跟新增是差不多的.这里不重复了!!



,
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/214214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号