ThinkPHP部门的 添加 列表 修改 删除功能示例

此处的内容添加是指类似于部门的管理,并非文章内容。最终显示。
此处的内容有些已经编缉成文章,但因为比较分散,所以在这进行全面总结,方便后期查看。

后面数据库部分

id是顶级分类,pid存放二级分类属于哪个主分类,sort是排序,remark是备注。

添加部门代码

控制器内容

#add方法采用自定义验证
		 public function add()
		 {
		 	#判断是否有数据提交过来
		 	#有数据则为真,否则为假
		 	if(IS_POST)
			{
				#处理表单提交
				#写入数据
				#$model = M('Dept');
				#因为我们加入了自定义验证,自定义验证放在了自定义模型中,所以需要用D函数
				$model = D('Dept');
				#数据对象创建
				#create:如果模板中name表单名与数据表中字段不匹配,则在创建数据对象的时候会被过滤掉。
				$data = $model->create(); #不传递参数则接收post数据
				#当上面执行create时,验证的结果就已经返回到$data中,验证失败返回假,否则返回真
				#下面如果$data为假则提示用户验证失败
				if(!$data)
				{
					#提示用户验证失败
					#输出用户提示信息,用$model->getError()
					$this->error($model->getError()); 
					#防止后面的断续执行,所以加上exit
					exit;
				}
				$result = $model -> add(); #add里面不放传参,则代表运行我们创建的对象  #其它的CURD都不用传参
				
				#判断返回值
				if($result)
				{
					#成功
					#成功则跳转到当前的showList方法
					$this->success('添加成功',U('showList'),3);
				}else{
					#失败
					$this->error('添加失败');
				}
				
			}else{
				#如果没有POST提交数据,那就显示添加页面,并将查询到的目录放到页面中
				$model = M('Dept');
				#查询顶级目录
				$data = $model->where('pid = 0')->select();
				
				$this->assign('data',$data);
			 	$this->display();
				
			}
		 }

模板内容

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Add</title>
		<script src="__ADMIN__/jquery.js"></script>
		
	</head>
	<body>
		<h2>信息登记</h2>
		<!-- 如果提交到的是当前方法,则可以不写提交路径 -->
		<form action="" method="post">
			<p>
				<label>部门名称:</label>
				<!-- 下面的abc用了字段映射,即数据库中的name,再下面的排序也用了映射 -->
				<input type="text" name="abc" placeholder="部门名称">
			</p>
			<p>
				<label>上级部门:</label>
				<select name="pid">
					<option value="0">顶级部门</option>
					<volist name='data' id='vol'>
						<option value="{$vol.id}">{$vol.name}</option>
					</volist>
				</select>
			</p>
			<p>
				<label>排序:</label>
				<input type="text" name="wasd" placeholder="排序">
			</p>
			<p>
				<label>备注:</label>
				<input type="text" name="remark" placeholder="备注">
			</p>
			<p>
				<a href="javascript:;" class="confirm">确定</a>
			</p>
		</form>
		<script>			
			//jQuery
			$(function()
			{
				$('.confirm').on('click',function(){
					$('form').submit();
				});
			});
		</script>
	</body>
</html>

部门列表代码

没有分页代码,只有展示。
分页功能请看:
http://www.xiuyuanxi.com/it/web/1509093770.html

控制器代码

#部门列表
		public function showList()
		{
			$model = D('Dept');
			$data = $model-> order('sort asc')->select();
			
			#二次查询对应的部门信息
			foreach($data as $key=>$value)
			{
				if($value['pid']>0)
				{
					#查询pid对应的部门信息
					$info = $model->find($value['pid']);
					#保留其中的name
					#从当前元素$data的下标中新增一个保存在里面
					$data[$key]['deptname'] = $info['name'];
				}
				
			}
			
					
			$this->assign('data',$data);
			$this->display();
		}

模板代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>列表页</title>
		<script src="__ADMIN__/jquery.js"></script>
		<style>
			#bm { width:100%; overflow:-Scroll;overflow-x:hidden; background:#F0C040}
			#bm ul{ width:100%; float:left;}
			#bm li{ width:150px; float:left; list-style: none;}
		</style>
	</head>
	<body>
		<div id="bm">
			<ul>
				<li>序号</li><li>部门</li><li>所属部门</li><li>排序</li><li>备注</li><li>操作</li>
			</ul>
			<volist name="data" id="vol">
			<ul>				
				<li><input type="checkbox" class="deptid" value="{$vol.id}">{$vol.id}</li>
				<li>{$vol.level|str_repeat='&emsp;',###*2}{$vol.name}</li>
				<li><if condition='$vol.pid ==0'>顶级部门<else/>{$vol.deptname}</if></li>
				<li>{$vol.sort}</li>
				<li>{$vol.remark}</li>
				<li><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></li>				
			</ul>			
			</volist>
			<ul><a class="del" href="javascript:;">删除</a></ul>
		</div>
		<script>
			$(function()
			{
				$('.del').on('click',function(){
					var idObj = $(':checkbox:checked'); //获取全部被选中的checkbox
					var id = ''; //接收处理的部门id值,组成id1,id2,id3...
					for(var i=0; i<idObj.length; i++)
					{
						id += idObj[i].value +',';
					}
					id = id.substring(0,id.length-1);
					//带着参数跳转到del方法					
					location.href = '__CONTROLLER__/del/id/'+id;
					return false;
				});
			});
		</script>
	</body>
</html>

修改内容代码

控制器部分

如果有POST提交则修改,否则便将部门部分查询出来,并放到修改页面的模板中。
#部门编辑功能
		public function edit()
		{
			if(IS_POST)
			{
				$model = D('Dept');
				$data = $model->create();
				if(!$data)
				{
					$this->error($model->getError());
					exit();
				}
				
				$result = $model->save();
				
				if($result !== false)
				{
					$this->success('修改成功',U('showList'),3);
				}else{
					$this->error('修改失败');
				}
				
			}else{
			
				$id = I('get.id');
				
				$model = M('Dept');
				$data = $model->find($id);
				#查询全部的部门信息,给下拉列表使用
				$info = $model->where('id!= '.$id)->select();
				
				$this->assign('data',$data);
				$this->assign('info',$info);
				$this->display();
			}
		}	

模板代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>部门编辑</title>
		<script src="__ADMIN__/jquery.js"></script>
	</head>
	<body>
		<form action="" method="post">
			<input type="hidden" name="id" value="{$data.id}" />
			<p>
				<label>部门名称:</label>
				<input type="text" name="name" value="{$data.name}">
			</p>
			<p>
				<label>上级部门:</label>
				<select name="pid">
					<option value="0">顶级部门</option>
					<volist name='info' id='vol'>
						{//注:语法规定要求,在 if判断语法里使用如$vol.id这种.的方式,在==的两边必须加空格,在$vol.id和$data.pid的两边也必须要有空格,否则不显示。}
						{//若$vol.id变成 $vol['id']这种方式,则不需要带空格也可以。}
						<option value="{$vol.id}" <if condition=' $vol.id == $data.pid '>selected="selected"</if>>{$vol.name}</option>
					</volist>
				</select>
			</p>
			<p>
				<label>排序:</label>
				<input type="text" name="sort" value="{$data.sort}">
			</p>
			<p>
				<label>备注:</label>
				<input type="text" name="remark" value="{$data.remark}">
			</p>
			<p>
				<a href="javascript:;" class="confirm">确定</a>
			</p>
		</form>
		<script>			
			//jQuery
			$(function()
			{
				$('.confirm').on('click',function(){
					$('form').submit();
				});
			});
		</script>
	</body>
</html>

删除代码

因为删除只有一个返回值显示删除是否成功,所以并不会有模板。

控制器部分

#部门删除
		public function del()
		{
			$id = I('get.id');
			$model = M('Dept');
			
			$result = $model->delete($id);
			if($result)
			{
				$this->success('删除成功',U('showList',3));
			}else{
				$this->error('删除失败');
			}
		}		

评论

大侠名号:   验证码: 点击我更换图片  

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND