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()); } }}?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title>
<?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; } }?>