【问题标题】:Dropdown depends on multi select dropdown in yii framework下拉依赖于 yii 框架中的多选下拉
【发布时间】:2013-12-14 02:46:19
【问题描述】:

我是 Yii 框架的新手,我无法通过下拉菜单解决这个问题。

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

1-dropdown 是水果、蔬菜、饮料;

2-dropdown 取决于用户选择,如果用户选择水果和饮料,应该显示苹果、葡萄、果汁、啤酒(都在一个下拉列表中);

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

这里是源码:

//---------- 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); 
            }
        }

【问题讨论】:

    标签: php drop-down-menu yii


    【解决方案1】:

    你问的方法是Dependent Dropdown。 YII 框架有创建Dependent Dropdown 的教程。查看此link 了解更多详细信息和示例

    编辑:

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

    您的标准条件是:

    $dpCriteria->condition = 'group in ('.implode(",",$groupName).')';

    【讨论】:

    • 我看到了这篇文章,我可以做依赖下拉,但我不能做多选下拉我的意思是第一个是多选,当你选择 2,3 或 4 个选项时,第二个应该显示依赖于第一个选择。我在上面写的。感谢您的回答!
    • 根据您的 cmets 更新了我的答案。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2017-04-30
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多