在使用联级输出的时候一到一个模型里面的小问题,之前不注意,模型里不同的方法每次得到的数据交给控制器的时候,我都以数组的形式输出,但是这个数组我作为私有字段,到时今天做联级菜单输出的时候,不能正常输出,最后不得不吧这个私有字段去掉,在每个方法的作用域里面分别初始化一个数组,这样就互不干扰!(还是考虑的太少,太异想天开!)
不说了,贴代码
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.'">'." ";//这里为了能够查看源代码更加清晰,所以加上了
//将主导航的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>'." ";
}
}
$htm .='</optgroup>';
}
//向模版里面注册变量
$this->tpl->assign('nav',$htm);
}
}
//晚安!