基于Nestedset的无级限分类和CTreeView的使用 [ 技术分享 ]
刚做了基于Nestedset的无级限分类,左侧菜单是使用CTreeView做的,两者结合起来非常好用,非常强大!
下面是效果demo: [attach]207[/attach]
MySQL数据库脚本: [attach]205[/attach]
Yii Framework无级限分类源码: [attach]206[/attach]
共 70 条回复
-
@舰长
速度慢的问题调查清楚了。是Xdebug导致的,将Xdebug停用就好了。另有一个问题。TreeController.php里面有这样一段代码:
public function actionUpdate($id) { $model=$this->loadModel($id); $model->parent = $model->getParentNode()->id; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['Tree'])) { $model = $this->loadModel($id); $parent = $this->loadModel($_POST['Tree']['parent']); if($model->getParentNode()->getIDValue() != $parent->getIDValue()) $result = $model->moveBelow($parent); $model->attributes=$_POST['Tree']; if($model->save()) $this->redirect(array('admin')); } $this->render('update',array( 'model'=>$model, )); }
其中
$model->parent = $model->getParentNode()->id;
这一句,Tree.php里面并没有getParentNode
这个函数,为什么却可以运行?实际上是调用了TreeBehavior.php里面的同名函数么?Tree和TreeBehavior没有直接继承关系,怎么会可以互相调用呢?百思不得其解。第二个问题,如果在admin界面中update id为1的那条记录,会报告
Trying to get property of non-object
错误。php的错误信息指向$model->parent = $model->getParentNode()->id;
,应该是id为1的这条记录没有Parent了吧?以上。
-
lz19881123 回复于 2011-07-31 22:29 举报
学习了,来接分了
-
zhangyjllf 回复于 2011-09-09 13:49 举报
偷偷地藏起来,已备后用
-
278893912qq 回复于 2011-09-14 16:45 举报
灰常感谢舰长分享。
╃巡洋艦㊣ 北京
注册时间:2010-11-21
最后登录:11小时前
在线时长:1674小时13分
最后登录:11小时前
在线时长:1674小时13分
- 粉丝1369
- 金钱76368
- 威望845
- 积分101558