继上篇分类下拉框解决方法,自己封装了一个类 [ 新手入门 ]
<?php
class SHtml extends CHtml
{
/**
*
* @param unknown_type $models array 数据
* @param unknown_type $condition array 条件字段 valueField=>id,textField=>name,parentValue=>pid
* @param unknown_type $listData array 中间传输数据
* @param unknown_type $num int 前缀循环次数
*/
public static function listTreeData($models,$condition,$listData=array(),$num=0)
{
$data = array();
$num++;
foreach($models as $model)
{
if($num > 0){
$value=self::value($model,$condition['valueField']);
$p = '|';
$n = abs($num)-1;
$pre = '--';
for($i = 0;$i < $n;$i++){
$pre .= $pre;
}
$text=$p.$pre.self::value($model,$condition['textField']);
}else{
$value=self::value($model,$condition['valueField']);
$text=self::value($model,$condition['textField']);
}
$listData[$value]=$text;
$parent_id=self::value($model,$condition['parentValue']);
$val = bumen::model()->findAll(array("select"=>"{$condition['valueField']},{$condition['textField']},{$condition['parentValue']}","condition"=>"{$condition['parentValue']}=".$value));
if(is_array($val) && count($val) != 0){
$data = self::listTreeData($val,$condition,$listData,$num);
foreach($data as $key=>$val){
$listData[$key]=$val;
}
}
}
return $listData;
}
}
调用的时候:
<?php echo $form->labelEx($model,'p_bumen'); ?>
<?php echo $form->dropDownList($model,'p_bumen',SHtml::listTreeData(bumen::model()->findAll(array("select"=>"id,bumen,p_bumen","condition"=>"p_bumen=0")),array('valueField'=>'id','textField'=>'bumen','parentValue'=>'p_bumen')),array(
'empty' => '- 请选择部门 -',
'options' => array(
))); ?>
<?php echo $form->error($model,'p_bumen'); ?>
显示效果: [attach]658[/attach] 希望对大家有帮助~
共 15 条回复
-
jeffy2009520 回复于 2012-03-06 13:51 举报
嘿嘿,刚接触一个多星期,正在学习摸索中,我会继续努力的~
-
jeffy2009520 回复于 2012-03-08 14:23 举报
没算法啊,是一个递归调用啊,分类表里边不是有id和parent_id,根据这两个来得递归调用啊
-
jeffy2009520 回复于 2012-03-08 14:40 举报
视图那里的方法调用就可以了,他是获取到一个数组,每个元素是一个对象,是的,是根据父id的一个递归调用,可以自动分组,不同组,--的个数会不一样
-
jeffy2009520 回复于 2012-03-22 09:01 举报
我是放到extensions里边的 然后在main.php引用了一下,里边还有一点错误,你们调的时候不能是
bumen::model()->findAll
要写成你要用的那个model名字,最近忙,这点改好我会把修改后的上传的~
jeffy2009520
注册时间:2012-02-23
最后登录:2015-04-17
在线时长:10小时57分
最后登录:2015-04-17
在线时长:10小时57分
- 粉丝3
- 金钱175
- 威望0
- 积分275