2013-12-01 3 views
0

Я пытаюсь это sample о создании зависимого раскрывающегося списка i созданной формы в областиCity/_form и копировать действиеDynamiccities в ProvinceCityController.php, но когда я меняю список DropDown, у меня нет никаких изменений? Я думаю, что должен включить ajax, но я не понимаю, как это сделать?Создание зависимого выпадающего списка в yii

<?php echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'), 
array(
'ajax' => array(
'type'=>'POST', //request type 
'url'=>CController::createUrl('ProvinceController/dynamiccities'), //url to call. 
//Style: CController::createUrl('ProvinceCity/methodToCall') 
'update'=>'#city_id', //selector to update 
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through 
))); 

//empty since it will be filled by the other dropdown 
echo CHtml::dropDownList('city_id','', array()); ?> 
+0

это может помочь вам http://codingbin.com/dependent-drop-down-lists-in-yii/ – MKD

ответ

0

Вот что вы будете делать в _form

 <?php echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'), 
    array(
    'ajax' => array(
    'type'=>'POST', //request type 
    'url'=>CController::createUrl('ProvinceController/dynamiccities'), //url to call. 
    'update'=>'#city_name', //selector to update 
    'data'=>array('country_id' => 'js:this.value'), 

    ))); 
     ?> 
</div> 
<div id=city_name> 
<?php echo $form->dropDownList($model, 'city_id', array()); ?> 

</div> 

Надеюсь, это поможет вам.

+0

он не работает я скопировать ваш код может помочь вам – maryam

+0

@ user3053998 Пожалуйста, напишите код вашего контроллера (dynamiccities). –

+0

ok Я добавляю dynamccites – maryam

0

Должно быть,

 <?php 
     $countryAry=array(1=>'USA',2=>'France',3=>'Japan'); 
     echo CHtml::dropDownList('country_id','', $countryAry, 
       array 
       (
        'ajax' => array 
        (
         'type'=>'POST', 
         'url'=>CController::createUrl('Controller/action'), 
         'dataType'=>'JSON', 
         'success'=>'js:function(data)' 
         . '{' 
         . '  var opt="<option value=>-----Select city-----</option>";' 
         . '  $.each(data,function(i,obj)' 
         . '  {' 
         . '   opt+="<option value=\'"+obj.id+"\'>"+obj.name+"</option>";' 
         . '  });' 
         . '  $("#city_id").html(opt);' 
         . '}' 
        ) 
      )); 

     echo CHtml::dropDownList('city_id','', array()); 
     ?> 

Но я предлагаю вам реализовать эту задачу, как показывает ниже.

 <?php 
     $countryAry=array(1=>'USA',2=>'France',3=>'Japan'); 
     echo CHtml::dropDownList('country_id','', $countryAry,array('onchange'=>'js:getCities()')); 
     echo CHtml::dropDownList('city_id','', array()); 
     ?> 


     <script type="text/javascript"> 
     function getCities() 
     { 
      $.ajax 
      ({ 
       type:'POST', 
       url:'Controller/action', 
       dataType:'JSON', 
       success:function(data) 
       { 
        var opt="<option value=>-----Select city-----</option>"; 
        $.each(data,function(i,obj) 
        { 
         opt+="<option value='"+obj.id+"'>"+obj.name+"</option>"; 
        }); 
        $("#city_id").html(opt); 
       } 
      }); 
     } 
     </script> 
0

Я нашел решение здесь Dependent dropdown list in yii

<?php 
$model=new ModelClass; // initilize it in controller 
$form=$this->beginWidget('CActiveForm', array(
'id'=>'dependent-form', 
'enableClientValidation'=>true, 
'htmlOptions' => array('enctype' => 'multipart/form-data','autocomplete'=>'off'), 
'clientOptions'=>array(
    'validateOnSubmit'=>true, 

) 
)); 
?> 
<div class="row"> 
<?php         
    echo $form->dropDownList($model,'country_id', 
    CHtml::listData(Countries::model()->findAll(), 'id', 'title'), 
    array(
    'prompt'=>'Select Country', 
    'ajax' => array(
    'type'=>'POST', 
    'url'=>Yii::app()->createUrl('YourController/loadstates'), // get states list 
    'update'=>'#ModelClass_state_id', // add the state dropdown id 
    'data'=>array('country_id'=>'js:this.value'), 
))); 
?> 
</div> 
<div class="row"> 
<?php         
    echo $form->dropDownList($model,'state_id', 
    array(), 
    array(
    'prompt'=>'Select State', 
    'ajax' => array(
    'type'=>'POST', 
    'url'=>Yii::app()->createUrl('YourController/loadcities'), // get states list 
    'update'=>'#ModelClass_city_id', // add the state dropdown id 
    'data'=>array('state_id'=>'js:this.value'), 
))); 
?> 
</div> 
<div class="row"> 
<?php         
    echo $form->dropDownList($model,'city_id',array(),array('empty'=>'-choose city-')); 
?> 
</div> 

    <?php echo CHtml::submitButton($model->isNewRecord ? 'Add' : 'Update',array('class'=>'btn btn-primary')); ?> 
<?php $this->endWidget(); ?> 
Смежные вопросы