ThinkPHP学习笔记(十一)自动填充一个无限极分类
创建数据库表:tb_cate:id,name,pid,path
action
<?php/** * ThinkPHP中的 * 自动完成(无限极分类) * 用户输入的字段并不是用户手动填写的 * */class AutoCateAction extends Action{ public function index(){ $cate=M('Cate'); $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order("bpath")->select(); foreach ($list as $key=>$value){ $list[$key]['count']=count(explode('-', $value['bpath'])); } $this->assign('alist',$list); $this->display(); } function add(){ //经过自定义模型 $cate=D('Cate'); if ($vo=$cate->create()) { dump($vo); if ($cate->add()){ $this->success("注册成功"); }else{ $this->error($cate->getError()); } }else{ $this->error($cate->getError()); } }}?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body><form action="__URL__/add" method="post">父级栏目:<select name="pid"> <option value="0">根</option> <volist name="alist" id="vo"> <option value="<!--{$vo['id']}-->"> <php> for($i=0;$i<$vo['count'];$i++){ echo '-'; } </php> <!--{$vo['name']}--> </option> </volist> </select>新栏目名:<input type="text" name="name"><br/> <input type="submit" value="添加栏目"><br/></form></body></html>
<?php class CateModel extends Model{ protected $_auto=array( array('path','filldata',3,'callback'), ); function filldata(){ //因为在model当中,所以不用new,直接用this就可以了 $pid=isset($_POST['pid'])?(int)$_POST['pid']:0; if ($pid==0)return 0; $pcate=$this->where('id='.$pid)->find(); $path=$pcate['path'].'-'.$pcate['id']; return $path; } }?>
立即学习“PHP免费学习笔记(深入)”;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号