因为CI严格遵守MVC框架,不能在后台从新获取子数据,只能一次将数据都传递给v层。
在model层,
public function get_rbac(){ $sql = 'select id,name,pid from rbac'; $query=$this->db->query($sql); return $query->result_array(); }
将所有数据一次都传递给view层。
controller层,正常显示。
public function topleft() { $data['rbac'] = $this->rbac_model->get_rbac(); $this->load->view('pf_top'); $this->load->view('pf_left',$data); }
关键在view层。没少费了劲。
<?php for($i=0;$i<count($rbac);$i++) { //构建一个循环,如果pid为0,直接显示, if ($rbac[$i]['pid']==0){ echo $rbac[$i]['name']; } echo '<hr/>';
//构建子循环, for($r=0;$r<count($rbac);$r++){ echo $rbac[$i]['id']; echo $rbac[$r]['pid']; if($rbac[$i]['id']==$rbac[$r]['pid']) //关键代码 echo $rbac[$r]['name']; echo '<hr/>'; }