Yii在数据库的下拉列表中显示treeview

Mah*_*kia 3 php database treeview html-select yii

我将类别和子类别保存在数据库中.我想在这样的CHtml下拉列表中显示它们:

Patrent_cat
   sub_cat1
   sub_cat2
Parent_cat2
  ...
Run Code Online (Sandbox Code Playgroud)

我的类别表是这样的

id name parent_id
Run Code Online (Sandbox Code Playgroud)

如果元组是父本身,则parent_id为0

我已经在我的分类模型中尝试了这个:

public function relations()
{
    return array(
                'getparent' => array(self::BELONGS_TO, 'Category', 'parent_id'),
                'childs' => array(self::HAS_MANY, 'Category', 'parent_id', 'order' => 'id ASC'),
    );
}

public function getCategoryTree() 
    {
        $subitems = array();
        if($this->childs) foreach($this->childs as $child) 
        {
            $subitems[] = $child->getListed();
        }
        $returnarray = array($this->id => $this->title);
        if($subitems != array()) 
            $returnarray = array_merge($returnarray, array('items' => $subitems));
        return $returnarray;
    }
Run Code Online (Sandbox Code Playgroud)

在我看来:

<?php 
         echo CHtml::dropDownList('category', 'id', 
                        Category::model()->CategoryTree,
                        array('empty' => '(Select a category'));
?>
Run Code Online (Sandbox Code Playgroud)

但它给了我一个空的下拉列表.如何在带有选项组的下拉列表中显示此树视图?(选项组是父类别,选项是sub_categories.

Web*_*vPT 7

试试这个

echo $form->dropDownList($model,'id',CHtml::listData(SubCat::model()->findAll(),'id', 'name','relation_name.name'),array('prompt'=>'Choose'));
Run Code Online (Sandbox Code Playgroud)

这将在下拉列表中显示父母和子类别

  • 这应该工作,只是`SubCat`将是`Category`本身,`relation_name`将是'getparent` (2认同)
  • 我添加条件到findAll只获得sub_cats,现在它正在工作,谢谢大家 (2认同)