Yii依赖下拉

时间:2013-12-18 07:53:16

标签: php ajax yii

我正在尝试实现一个依赖的下拉列表,它不会从数据库中检索它的数据,但是,我当然希望将它们的条目保存在我的表中。
我试图使用Yii的教程,即 http://www.yiiframework.com/wiki/24/
但正如您可以看到它正在从表中检索数据但我希望根据所选值填充数组。

public function actionDynamiccities()
{
    $data=Location::model()->findAll('parent_id=:parent_id', 
                  array(':parent_id'=>(int) $_POST['country_id']));

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

请协助 Javascript可能是一个选项但是我将如何以Yii形式实现它。

1 个答案:

答案 0 :(得分:0)

这是我给定链接(http://www.yiiframework.com/wiki/24/

的示例程序
        <!-- ===================== My First Dropdown =========== -->
        <?php
        echo CHtml::dropDownList('country_id', '', array(1 => 'USA', 2 => 'France', 3 => 'Japan'), array(
            'ajax' => array(
                'type' => 'POST', //My method type
                'url' => CController::createUrl('site/CallCities'), //This is my request/ajax URL
                array('coountry_id'=>'js:this.value'), //I'm passing the selected dropdonw value.
                'dataType' => 'JSON', 
                'success'=>'js:function(data)' //The functionaliy after success
                . '{'
                . '    var html="";'
                . '    $.each(data,function(i,obj)'
                . '    {'
                . '         html+="<option value=obj.id>"+obj.name+"</option>"'
                . '    });'
                . '    $("#city_id").html(html);'
                . '}' 

        )));
        ?>

        <!-- ===================== My Second Dropdown =========== -->
        <?php
        echo CHtml::dropDownList('city_id', '', array());
        ?>

而且,我的控制器方法是

        public function actionCallCities()
        {
            $cityId=$_POST['coountry_id'];
            $criteria=new CDbCriteria();
            $criteria->select=array('id,name');
            $criteria->condition='city_id='.$cityId;
            $criteria->order='name';
            $cityAry= MyCity::model()->findAll($criteria);
            $ary=array();
            foreach($cityAry as $i=>$obj)
            {
                $ary[$i]['id']=$obj->id;
                $ary[$i]['name']=$obj->name;            
            }
            echo json_encode($ary);
        }

我希望,这个示例程序适合你