在使用联级输出的时候一到一个模型里面的小问题,之前不注意,模型里不同的方法每次得到的数据交给控制器的时候,我都以数组的形式输出,但是这个数组我作为私有字段,到时今天做联级菜单输出的时候,不能正常输出,最后不得不吧这个私有字段去掉,在每个方法的作用域里面分别初始化一个数组,这样就互不干扰!(还是考虑的太少,太异想天开!)
不说了,贴代码
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); } } //晚安!
时间: 2024-12-29 01:17:45