现在我写的是在model里用一个方法递归,先贴代码.
在模型里定义
function getCateSelect($parentId,$level) //$level为分类深度,以区分不同分类的缩进
{
$level++;
//parentId字段值为某条记录的id值时代表此类直属哪个分类
$this->db->where('parentId',$parentId);
$query=$this->db->get('ci_nav');
if($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo "<option value='$row->id'>";
for($i=1;$i<$level;$i++)
{
echo " ";
}
echo $row->navName;
echo "</option>";
$this->getCateSelect($row->id,$level);
}
}
}
在视图里直接<?php $this->Model_nav->getCateSelect(0,1);?>
现在的应用是生成分类的下拉表.但是觉得这样处理扩展性很不好,因为都是直接在model用echo输出html代码,想弄成对象或是数组输出,这样就不只限于生成下拉表了.对象输出,return $query->result()就行了,但有个递归在,可能是编程思想欠佳,按自己的想法return $query->result()却只获得第一层分类.请教下有此方面经验的朋友. |