下拉取决于yii框架中的多选下拉列表

时间:2013-12-14 02:46:19

标签: php drop-down-menu yii

我是Yii框架的新手,我无法用下拉列表解决这个问题。

在我的页面中,我有两个下拉列表,两个都是多选下拉列表。第二个取决于第一次下拉。例如,

1滴是水果,蔬菜,饮料;

2-downdown取决于用户选择,如果用户选择水果和饮料,它应该显示苹果,葡萄,果汁,bier(所有这些都在一个下拉列表中);

如果用户只选择一个选项,例如第一个下拉菜单,第二个应该显示洋葱,土豆等。

此处源代码:

//---------- VIEW ------------

    <div id="left">
                        <div class="btn-group">
                            <?php             
                                echo CHtml::dropDownList('group', '', CHtml::listData($group,'group','group'), array(
                                    'multiple'=>'multiple',
                                    'ajax'=>array(
                                        'type' => 'POST',
                                        'url' => CController::createUrl('site/change'),
                                        'update' => '#e5'
                                    ),
                                    'id' => 'e4',
                                    'style' => 'width:300px'
                                ));
                            ?>
                        </div>
                    </div>
                    <div id="right">
                        <div class="btn-group">
                            <?php
                                echo CHtml::dropDownList('subgroup','', array(), array(
                                    'multiple' => 'multiple',
                                    'id'=>'e5',
                                    'style' => 'width:300px'
                                ));
                            ?>
                        </div>
                    </div>


// ------------ CONTROLLER ------------


public function actionChange()
        {

            $groupName = $_POST['group'];        


            $dpCriteria = new CDbCriteria();
            $dpCriteria->select = 'subgroups';
            $dpCriteria->condition = 'group = '.$groupName;

            $data = Subgroups::model()->findAll($dpCriteria);

            $data = CHtml::listData($data,'subgroups','subgroups');
            foreach($data as $value=>$name)
            {
                echo CHtml::tag('option',
                           array('value'=>$value),CHtml::encode($name),true); 
            }
        }

2 个答案:

答案 0 :(得分:0)

您要问的方法是Dependent Dropdown。 YII框架有创建Dependent Dropdown的教程。请查看此link以获取更多详细信息和示例

修改

在您的代码中,您正在检查具有单个值的组名'group = '.$groupName;。但是$groupname是一个有价值的数组。所以你在mysql中使用了in,其中包含了imploded $ groupname数组的值。

您的条件是:

  

$ dpCriteria-&gt; condition ='group in('.implode(“,”,$ groupName)。')';

答案 1 :(得分:0)

试试这样。在你的ajax数组中,

'update'=>'#'.CHtml::activeId($model,'attribute_to_update'),
'data'=>array('atribute'=>'js:this.value'),