php删除分类,分类删除 · thinkphp企业实战 · 看云

前端模板C层点击事件时,传入要删除的id数据:

~~~

删除

~~~

删除分类:

~~~

public function del(){

$del=db('cate')->delete(input('id'));//删除的事单个id的分类

if($del){

$this->success('删除成功',url('lst'));

}else{

$this->error('删除失败');

}

}

~~~

不过由于有的分类具有多个子栏目的情况,所以要设置一个删除这个栏目下相应子栏目的方法,原理是获取 所要删除栏目下pid的值,循环获取所有这一pid栏目的id,删除这些id就实现了删除子栏目

控制器层要用到前置操作

可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。

['except' => '方法名,方法名']

表示这些方法不使用前置方法,

['only' => '方法名,方法名']

表示只有这些方法使用前置方法。

根据官方解释,我们用only方法

protected $beforeActionList = [

//'first',

//'second' => ['except'=>'hello'],

'delsoncate' => ['only'=>'del'],//执行del方法前执行delsoncate方法

];

然后建立delsoncate方法

~~~

//删除子栏目

public function delsoncate(){

$cateid=input('id');//要删除的主id

$cate=new CateModel();

$sonids=$cate->getchilrenid($cateid);//$sonids子栏目id,getchilrenid方法在M层获得子栏目id的操作

if($sonids){

db('cate')->delete($sonids);//删除操作

}

}

~~~

根据上面getchilrenid($cateid)获取子栏目的方法,我们在M层中操作:

~~~

//根据删除栏目id获取该栏目下的所有子栏目id

public function getchilrenid($cateid){

//获取所有栏目id的方法

$cateres=$this->select();

return $this->_getchilrenid($cateres,$cateid);//传递栏目数据到_getchilrenid方法

}

public function _getchilrenid($cateres,$cateid){

static $arr=array();//静态化空数组

foreach($cateres as $k=>$v){//循环获得的所有数据

if($v['pid']==$cateid){//判断pid也就是上级栏目id等于栏目id,

$arr[]=$v['id'];//则把这一pid下的所有id存放到数组中,也就是获得所有子栏目

$this->_getchilrenid($cateres,$v['id']);//执行这个方法

}

}

return $arr;//返回数组数据,让控制器层使用

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值