2013-12-18 186 views
0

我想實現一個依賴的下拉列表,它不會從數據庫中檢索它的數據,但是,我當然希望將他們的條目保存在我的表中。
我試過使用Yii的教程,即 http://www.yiiframework.com/wiki/24/
但是,正如你所看到的,它是從表中檢索數據,但我想要一個數組來填充選定的值。Yii依賴下拉列表

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

工作,請發佈HTML以及。 –

+0

+1,可能clientChage參數並未在視圖中設置 –

+0

另外,爲什麼不使用'CHtml :: dropDownList()'? – casraf

回答

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

我希望,這個例子程序會爲你

+0

正如我已經提到,我正在尋找從數組或其他地方添加城市,我沒有興趣調用正如你所做的那樣,在控制器中進行查詢。 –