【问题标题】:Creating a dependent dropdown in yii在 yii 中创建依赖下拉列表
【发布时间】:2013-12-01 08:35:00
【问题描述】:

我正在尝试这个sample 关于创建一个依赖下拉列表我在provinceCity/_form 中创建表单并将actionDynamiccities 复制到ProvinceCityController.php 但是当我更改下拉列表时我没有任何更改? 我想我必须启用 ajax 但我不知道该怎么做?

<?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()); ?>

【问题讨论】:

标签: php ajax yii html-select


【解决方案1】:

这是您将在 _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>

希望对你有所帮助。

【讨论】:

  • @user3053998 请写下你的控制器的代码(动态城市)。
【解决方案2】:

应该是,

        <?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>

【讨论】:

    【解决方案3】:

    我在这里找到了解决方案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(); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 2015-08-09
      • 2019-10-20
      • 2018-06-17
      • 1970-01-01
      相关资源
      最近更新 更多