20140911cms3栏目字段0911_第1页
20140911cms3栏目字段0911_第2页
20140911cms3栏目字段0911_第3页
20140911cms3栏目字段0911_第4页
20140911cms3栏目字段0911_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、栏目的管理创建栏目表:create table it_category ( id tinyint unsigned primary key auto_increment, cat_name varchar(32) not null default comment 栏目的名称, parent_id tinyint unsigned not null default 0 comment 父级栏目的id, model_id tinyint unsigned not null default 0 comment 所属模型的id, list_temp varchar(32) not null default comment 列表页面模板的名称, content_temp varchar(32) not null default comment 内容详情页模板名称)engine myisam charset utf8;1、添加栏目(1)添加栏目的控制器,并添加一个add的方法。(2)新建一个栏目的model在里面添加验证规则无限极分类的方法class CategoryModel extends Model protected $_validate=array( array(cat_name,require,栏目名称不能为空), array(cat_name,栏目名称已经存在,0,unique), array(parent_id,require,父栏目名称不能为空), array(model_id,require,模型名称不能为空), ); public function getsort() $cates = $this-select(); return $this-_sort($cates,$parent_id=0,$lev=0); /* 参数:$arr:表示栏目的数据, 参数:$parent_id */ public function _sort($arr,$parent_id=0,$lev=0) static $list=array(); foreach($arr as $v) if($vparent_id=$parent_id) $vlev=$lev; $list=$v; $this-_sort($arr,$vid,$lev+1); return $list; (3)在控制器add方法中添加如下代码:public function add() /要取出所有的模型名称 $model=D(Model); $modeldata = $model-select(); /取出所有的栏目 $catemodel = D(Category); $catedata = $catemodel-getsort(); if($this-isPost() if($catemodel-create() if($catemodel-add() $this-success(添加栏目成功,_URL_./lst);exit; else $this-error(添加栏目失败); else $this-error($catemodel-getError(); /print_r($catedata);exit; $this-assign(catedata,$catedata); $this-assign(modeldata,$modeldata); $this-display();2、栏目列表页面(1)在控制器中 添加一个lst方法,用来展示栏目在栏目的model中定义函数:在控制器中取出数据(2)在lst对应的静态页面中,遍历栏目数据3、删除栏目在删除栏目的时候,如果删除父栏目在父栏目下面的子栏目要一块被删除。(1)在栏目的列表页面,添加一个删除的链接。(2)在删除栏目时,要找到该栏目的子栏目的 id.因此要在栏目的model定义一个寻找子栏目id的方法。(3)在控制器添加del的方法。4栏目修改:(1)在栏目的列表页面,添加修改的链接(2)新建一个edit的方法,查找出当前栏目的数据,并展示到静态页面中。在修改栏目时,要注意,不能把自己的子栏目当成自己的父栏目。解决思路:把当前要修改的栏目的子栏目的id找到,判断提交的父栏目的id是否在子栏目的id中。若存在则不允许这样修改,具体的代码:public function edit() $id = (int)$_GETid; $catemodel = D(Category); $cateinfo =$catemodel-find($id); $catedata = $catemodel-getsort(); $model=D(Model); $modeldata = $model-select(); if($this-isPost() /要接收当前要修改的栏目的id $id = $_POSTid; /根据该id找到他子栏目的id, $ids=$catemodel-getchildid($id); $ids=$id;/把当前栏目的id添加到数组里面 /接收要修改栏目的父栏目的id. $parent_id=$_POSTparent_id; if(in_array($parent_id,$ids) $this-error(不能这样修改栏目,不能把自己的子孙栏目当成自己父栏目); if($catemodel-create() if($catemodel-save()!=false) $this-success(修改栏目成功,_URL_./lst);exit; else $this-error(修改栏目失败); else $this-error($catemodel-getError(); $this-assign(cateinfo,$cateinfo); $this-assign(catedata,$catedata); $this-assign(modeldata,$modeldata); $this-display(); 二、完成自动添加新建一张表。该表用来存储所有模型的字段信息。create table it_modelfield( id tinyint unsigned primary key auto_increment, model_id tinyint unsigned not null default 0 comment 添加的字段属于哪个模型, field_ename varchar(32) not null default comment 字段的英文名称, field_cname varchar(32) not null default comment 字段的中文名称, field_type varchar(32) not null default comment 字段的类型, field_value varchar(32) not null default comment 字段的默认值)engine myisam charset utf8;1、在模型列表,添加一个字段列表的按钮2、新建一个modelfield的控制器,添加lst方法。3、把取出的字段遍历到lst方法对应的静态页面中。4、在lst方法对应的静态页面中添加一个添加字段的按钮5、在控制器中添加一个add的方法,并创建一个该方法对应的静态页面,在modelfield模型中添加验证规则6、在add方法中接收表单入库操作,还要给模型的附加表添加字段。具体的代码:public function add() if($this-isPost() $model=D(Modelfield); if($model-create() if($model-add() /添加字段入库成功,则要给附加表添加字段。 /取出模型的附加表 $m = D(Model); $id=$_POSTmodel_id; $field_ename=$_POSTfield_ename; $table_name = $m-where(id=$id)-getfield(table_name); switch($_POSTfield_type) case int: $filetype=$field_ename. int not null default 0; break; case float: $filetype=$field_ename. float(10,2) not null default 0.0; break; case single: case radio: case checkbox: case select: $filetype=$field_ename. varchar(64) not null default ; break; case multi: $filetype=$field_ename. varchar(512) not null default ; break; $sql=alter table . $table_name. add . $filetype; $model-Execute($sql); $this-success(添加字段成功,_URL_./lst/model_id/$id);exit; else $this-error(添加字段失败); else $this-error($model-getError(); $this-display(); 三、根据模型字段完成表单生成1、取出有栏目的模型使用sql语句:取出数据select cat_name,a.mod

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论