我们如果这样写代码虽然可以实现头部二级分类的显示,但是如果再别的控制器下那么会出现显示不了。。
如果再加多一段一样的代码也可以实现出一样的效果:
但是这样会导致代码冗余现象,所以我们为了解决这个问题,可以通过一个中间层来处理,所以我们创建一个CommonController.class.php的控制器来实现解决代码冗余的一部分问题:
<?php namespace HomeController; use ThinkController; class CommonController extends Controller { function __construct(){ //继承父类的构造方法,所以网站在执行的时候会先执行他 parent::__construct(); $mod = M("Category"); $where['cate_pid'] = '0'; //这样写可以达到一种防SQL注入的效果 $cate = $mod -> where($where) -> select(); //获取顶级栏目为0的结果集 $this -> assign('cate',$cate); //dump($cate); } }
我们的做法是用构造方法来实现,因为网站会优先去执行构造方法,然后再去执行别的方法。。
然后我们在首页的IndexController.class.php和首页别的控制器下直接继承我们的Common中间层问题即可解决代码冗余问题:
然后在来到我们的页面上即可发现网站头部也可以成功展现出我们想要的二级栏目的效果: