1

我正在尝试在 Yii 的下拉列表中列出来自 treview 的值。所以,我已经有一个函数来连接路径中的树视图,比如(例如primary\secondary\terciary。我调用这个函数,从数据中传递ID,函数选择父母,从数据库中创建列表。

public static function getPath($id) {

        $post=PlanoAssunto::model()->find('id=:id', array(':id'=>$id));

        if ($post->id_pai == null) {
        $row=$post->assunto;
        $data= $row;       
        }
        else {
        $row=$post->assunto;
        $row=PlanoAssunto::getPath($post->id_pai).'/'.$row;
        $data= $row;}

        if (isset($data)) { 
            return $data;     
            }
            else { 
                $data = 'Nulo';
                return $data;  
            }               
}

这在视图中工作正常,使用这个:

<?php echo $form->labelEx($model,'id_pai');?>

        <?php   if (isset($_GET['id'])){
                echo  PlanoAssunto::model()->getPath($_GET['id']); }
                else { echo "Novo Assunto Principal";}
        ?>

但现在我想用路径列表填充表单中的选择。而且我无法在 CHtml::listData 中运行函数。我正在尝试使用这个模型,但没有成功:

public static function getTypeOptions() {   
    return  CHtml::listData(PlanoAssunto::model()->findAll(),'id','getPath($id)');           
}

那么,我做错了什么?我无法设法将树视图以路径格式放入值中,与他在数据库中的 ID 相关联。

我不知道如何填充 ListData 中的值,我的 HTML 返回 ID,但值中有任何数据。

 <select name="Areaxplanoassunto[idAssunto]" id="Areaxplanoassunto_idAssunto">
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="9"></option>
<option value="10"></option>
<option value="11"></option>
</select>

谢了。(我来自巴西,英语很抱歉)

4

1 回答 1

0

我找到了解决办法。

我必须创建另一个函数来将 ID 和 PATH 中的 ID 放入数组中。所以我在 CHtml::listData 中调用这个函数并且一切正常。

这是代码:

public static function getLista(){
        $models = PlanoAssunto::model()->findAll();  

        foreach($models as $model) {
                $row['id'] = $model->id;
                $row['path'] = PlanoAssunto::getPath($model->id);
                $data[] = $row;
        }       
        if (isset($data)) { 
            return $data;     
            }
            else { 
                $data['id'] = 'Nulo';
                $data['path'] = 'Nulo';
                return $data;  
            }                                             
}

gettypeoptions 使用 CHTML::ListData 获取结果

public static function getTypeOptions() {

    return  CHtml::listData(PlanoAssunto::model()->getLista(),'id','path');           
}

在 _form 视图中

<?php echo $form->dropDownList($model,'idAssunto', PlanoAssunto::model()->getTypeOptions()); ?>

结果是带有路径格式的树视图的下拉列表。任何问题,我都可以解释更多。

于 2014-10-31T14:54:43.653 回答