学习笔记-php简单联级下拉菜单输出-2016.4.7

  在使用联级输出的时候一到一个模型里面的小问题,之前不注意,模型里不同的方法每次得到的数据交给控制器的时候,我都以数组的形式输出,但是这个数组我作为私有字段,到时今天做联级菜单输出的时候,不能正常输出,最后不得不吧这个私有字段去掉,在每个方法的作用域里面分别初始化一个数组,这样就互不干扰!(还是考虑的太少,太异想天开!)

不说了,贴代码

html部分

<select name="nav">
  <option>请选择一个栏目类别</option>
    {$nav}
</select>

/********************************/
php控制器部分
<?php

class ContentAction extends Action{
public function __construct(&$tpl){
parent::__construct($tpl);
}

public function action(){
switch($_GET['action']){
case 'show':
$this->show();
break;
case 'add':
$this->add();
break;
case 'update':
$this->update();
break;
case 'delete':
$this->delete();
break;
default:
Tool::alertBack('非法操作!');
break;
}
}

//show
private function show(){
$this->tpl->assign('show',true);
$this->tpl->assign('title','文档列表');
}

//add
private function add(){
$this->tpl->assign('add',true);
$this->tpl->assign('title','新增文档');
//获取联级下拉菜单
/*
* 使用<optgroup></optgroup>分组获取主菜单
* 再内容控制器内实例化导航模型
*/
//初始化一个变量
$htm = 0;
     //实例化nav模型类
$nav = new NavModel();
foreach($nav->getAllNav() as $object){//这里循环输出主导航
       //将主导航用optgroup标签按照分组形式输出
$htm .= '<optgroup label="'.$object->nav_name.'">'."\r\n";//这里为了能够查看源代码更加清晰,所以加上了\r\n
       //将主导航的ID交给导航模型的私有字段
$nav->id = $object->id;
        //同过ID查找对应的PID,并加以判断
if(!!$childNav = $nav->getAllChildNav()){
         //如果存在就将数组数据循环取出,并用option标签输出
foreach($childNav as $obj){
$htm .= '<option value="'.$obj->id.'">'.$obj->nav_name.'</option>'."\r\n";
}
}
$htm .='</optgroup>';
}
      //向模版里面注册变量
$this->tpl->assign('nav',$htm);
}


}

//晚安!
posted @ 2016-04-07 03:06  兰小宇  阅读(632)  评论(1编辑  收藏  举报