无限分类之修改分类
第一步:展示修改栏目信息
第二步:接收修改数据
注意:如果修改后的pid如果在当前修改id数据的子孙id内或者pid=id则提示错误
第三步:存入数据库
实现代码
//修改
public function update($id)
{
$colum = new ColumModel();
if(Request()->isPost()){
//第二步:接收修改数据
$res = $this->descendants($id);
$data = input('post.');
//注意:如果修改后的pid在当前修改数据id的子孙id内或者pid=id则提示错误
if(in_array($data['pid'], $res)|| $id==$data['pid']){
$this->error("能修改到其子孙节点下");die();
}
//第三步:存入数据库
$res = $colum->save($data, ['id'=>$id]);
if($res){
$this->success("修改成功", url('index'));
}else{
$this->error("修改失败");
}
}else{//第一步:展示修改栏目信息
//查询出修改栏目的详细信息
$onedata = db('colum')->find($id);
$this->assign('onedata',$onedata);
//所有栏目无限分类展示
$data = $colum->coltree();
$this->assign('data',$data);
return view();
}
}
//遍历该id下所有子孙节点
public function descendants($id)
{
//第一步:查询栏目表所有数据
$colum = new ColumModel();
$all_data = $colum->select()->toArray();
//第二步:获取所有子孙节点,并返回
return $this->get_descendants($all_data, $id);
}
//获取所有子孙节点,并返回
public function get_descendants($all_data, $id)
{
static $arr = array();
foreach ($all_data as $key=>$value){
if($value['pid']==$id){
$arr[] = $value['id'];
$this->get_descendants($all_data, $value['id']);
}
}
return $arr;
}