课程咨询 :4000178985

  • Yii框架zii.widgets.CMenu使用分享

    发布:西安php培训      来源:达内      时间:2016-06-28

  • 先自我介绍下,我叫胡良云,接触编程的时间只有3月多一点(始于达内),是新得不能再新的新手,所以下文自称:小白!另外小白对于那些抄袭的人表示鄙视,本文纯属小白自行探索所得,绝非抄袭,特此声明,如需转载请跟帖征询作者的同意,如果有不足之处也请各位老师同学指正,谢谢.
    最近小白在学Yii框架,在老师讲课的基础上小白对Yii框架进行了艰苦卓绝的探索,由于Yii框架很庞大,小白估计以小白的水平要彻底掌握Yii框架至少需要一个月时间,而老师只是讲了一些基础性的知识,所以更多的东西其实需要我们自行探索.
    好了,以下直入主题:
    zii.widgets.CMenu是什么?
    它是Yii框架提供给我们的一个小助手,CMenu使用嵌入式的HTML列表为网页创建显示一个多层次的菜单.
    如何使用zii.widgets.CMenu?
    我们主要使用它来为我们创建导航栏,小白以目前王志强老师所讲项目主菜单为例,由于导航栏属于公共部分,我们需要在components目录下创建一个公共基础类,因为是在前台使用我将其命名为FrontController,它继承Controller,所以继承了public $menu=array()属性,这个属性是Controller为我们提供的用来为zii.widgets.CMenu传值的公共属性.
    接下来我们在FrontController中创建公用方法初始化init,它将会在其他方法调用之前执行,详细代码如下:
    public function init()
            {
          //我们的要生成菜单首先要获取栏目数据
    $cateOb=Category::model();
          $cOb=new CDbCriteria();
          $cOb->condition='isshow=1';//只获取要展示的栏目
          $cOb->order='indexnum asc';//升序排列,方便后台操作
          $reOb=$cateOb->findAll($cOb);//查询表中所有记录
          $cArr= array();//声明一个数组
    //遍历拼装$cArr
          foreach($reOb as $k=>$ob){
    //为zii.widgets.CMenu提供label名称,该名称会显示在导航栏
             $cArr['items'][$k]['label']=$ob->attributes['name'];
    //对栏目类型进行判断,从而提供不同的url
             if ($ob->attributes['type']=='单位信息') {
                 //如果是单位信息类,我们提供以下url并为id传值便于下一步操作       
                                 $cArr['items'][$k]['url']=array('/cominfo/detail/id/'.$ob->attributes['id']);
             }elseif ($ob->attributes['type']=='文章') {
                 $cArr['items'][$k]['url']=array('/news/lister/id/'.$ob->attributes['id']);
             }elseif ($ob->attributes['type']=='产品') {
                 $cArr['items'][$k]['url']=array('/product/lister/id/'.$ob->attributes['id']);
             }
                    }
    //为菜单添加首页,因为首页的位置一般是在最前面,所以从数组前面插入
                    array_unshift($cArr['items'],array('label'=>'首页', 'url'=>array('/site/index')));
    //为菜单添加登录和退出栏,从数组后面插入
                    array_push($cArr['items'],array('label'=>'登录', 'url'=>array('/site/login'),'visible'=>Yii::app()->user->isGuest),array('label'=>'退出 ('.Yii::app()->user->name.')','url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest));
    //将拼装好的数组$cArr赋值给公共属性menu
                    $this->menu=$cArr;
            }
    接下来,我们到你需要创建菜单的地方进行调用就可以了,一般情况,我们在layouts布局模板中使用,这样更为方便,代码如下:
    <!-- 主菜单 -->
    <div id="mainmenu">
    <?php $this->widget('zii.widgets.CMenu',$this->menu); ?>
    </div>
    貌似看起来有些复杂,大概是小白阐述能力有限,大家可以自行尝试,只要学会了,用起来还是很酸爽的!
    如果有什么不对的地方,或者费解的地方可以跟帖提问,小白会尽力为大家解答,另外,请大家支持<狂人与海>!
    小白是跨界哈,小说界编程最棒,编程界小说最棒,这就是跨界!
    以上原创技术帖,更多关于Yii框架的攻略,敬请期待,谢谢!

上一篇:如何修改MySQL的用户名,密码

下一篇:什么是UBB代码

最新开班日期  |  更多

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:05月31

PHP高级开发工程师定制班

PHP高级开发工程师定制班

开班日期:05月31

PHP高级开发工程师精品班

PHP高级开发工程师精品班

开班日期:05月31

PHP高级开发工程师就业班

PHP高级开发工程师就业班

开班日期:05月31

  • 地址:西安市碑林区李家村万达中铁第壹国际A座9层
  • 课程培训电话:4000178985     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56