Yii CActiveForm::dropdownList 无限层分类树形程序设计
2013-04-11 16:12
405 查看
昨天晚上在做项目是又遇到了多层产品分类的下拉菜单设计。估计大家也是经常遇到的需要做的功能,暂时我用最简单的数据结构来讲解我用yii的最新设计吧。
category 如下图:
之前我们一般的做法都是先把数据查询出来,然后根据数据结构先把分类的层级结构处理了,如下
然后再把$data放进dropDownList或自己循环显示select的option
下面是我最新的设计代码:
model代码:
view代码
我把只要的代码加粗显示。对了,熟悉yii的朋友都知道这里我们使用CComponent的getter,通过getter,我们把Category的属性字段增加了一个optionName(根据分类的level对name进行缩进处理),增强了model的功能来实现我们这个经常遇到的关于下拉选择的树形数据显示问题。比之前一般用的先循环一次处理数据更加优雅的解决了这个问题。使用oop设计的封装,代码减少了,语义也清晰了,代码也更加好维护了^_^
顺便说一句,本文是我的第一篇博文,以后项目中有新的设计和技巧,我都会尽量抽时间写出来与大家分享~,也希望各位多多指点
category 如下图:
之前我们一般的做法都是先把数据查询出来,然后根据数据结构先把分类的层级结构处理了,如下
$data = array(); foreach($models as $model){ $data[$model->id] = str_repeat('  ', $this->level).$model->name; }
然后再把$data放进dropDownList或自己循环显示select的option
下面是我最新的设计代码:
model代码:
* @property integer $id * @property string $name * @property integer $parent_id * @property string $path * @property string $level ... class Category extends CActiveRecord{ ... public function getOptionName(){ return str_repeat('  ', $this->level).$this->name; } ... }
view代码
/* @var $form CActiveForm */ ... $form->dropDownList($model,'parent_id', CHtml::listData(Category::model()->findAll(), 'id', 'optionName'),array('class'=>'span4', 'encode'=>false)); ...
我把只要的代码加粗显示。对了,熟悉yii的朋友都知道这里我们使用CComponent的getter,通过getter,我们把Category的属性字段增加了一个optionName(根据分类的level对name进行缩进处理),增强了model的功能来实现我们这个经常遇到的关于下拉选择的树形数据显示问题。比之前一般用的先循环一次处理数据更加优雅的解决了这个问题。使用oop设计的封装,代码减少了,语义也清晰了,代码也更加好维护了^_^
顺便说一句,本文是我的第一篇博文,以后项目中有新的设计和技巧,我都会尽量抽时间写出来与大家分享~,也希望各位多多指点
相关文章推荐
- PHP 的YII框架中CActiveForm dropDownList联动效果
- (无限级、递归)DropDownList显示树形分类
- php 无限分类 树形数据 格式化
- Yii CActiveForm 增加参数的问题(Undefined index: ispic)
- yii在form中使用dropdownlist
- yii CActiveForm CHtml组件使用总结
- DropDownList中显示无限级树形结构
- (无限级、非递归)树形分类
- php 无限分类 树形数据 格式化
- asp.net中用DropDownList实现无限级分类菜单
- 5行代码 不用递归实现无限分类数据的树形格式化
- 最简单的无线分类,无限树形菜单解决方案
- php三级联动+无限分类+树形菜单
- thinkphp5带分组功能的树形结构的无限级分类节点展示
- C#实现的无限级分类类树形管理
- DropDownList解决无限级分类
- DROPDOWNLIST无限树形菜单
- 4.20tips(mysql,字符串,dropdownlist无限分类,空格等)
- PHP无限分类(树形类)的深入分析
- php无限分类与树形菜单