如何在yii2中创建依赖选择2下拉?

时间:2016-08-07 14:58:35

标签: javascript php ajax yii2

我有2个选择2下拉列表。一个是国家,一个是城市。所以现在,我想选择国家和我的城市选择2应该只根据我的国家选择加载所有。怎么可能?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

你把这个代码用在表格中     

<?php  $Country= ArrayHelper::map(Country::find()->all(),'id', 'country_name');?>
<?php  echo $form->field($model, 'country')->dropDownList($Country, 
     ['prompt'=>'-Choose a Category-',
      'onchange'=>'
        $.post( "'.urldecode(Yii::$app->urlManager->createUrl('country/lists&id=')).'"+$(this).val(), function( data ) {
          $( "select#city_id" ).html( data );
        });
    ']); ?>
<?php echo $form->field($model, 'city')->dropDownList(          
    ['prompt'=>'-Choose a Sub Category-'],
    ['id'=>'city_id']
);?>
<div class="form-group">
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?> 

并在控制器中创建列表操作

public function actionLists($id)
{
    $sql = "select * from city where country_id ='$id' ";
    $models = City::findBySql($sql)->asArray()->all();   
    if(sizeof($models) >0)
    {
        echo "<option value="">-Choose  City-</option>";
        foreach($models as $model)
        {
            echo "<option value='".$model['id']."'>".$model['city_name']."</option>";
        }
    }
    else
    {
        echo "<option>-Choose a Sub City-</option><option></option>";
    }

}