我有2个选择2下拉列表。一个是国家,一个是城市。所以现在,我想选择国家和我的城市选择2应该只根据我的国家选择加载所有。怎么可能?
答案 0 :(得分:1)
您可以创建表单临时http://www.yiiframework.com/wiki/723/creating-a-dependent-dropdown-from-scratch-in-yii2/或使用正确的扩展程序http://demos.krajee.com/widget-details/depdrop
答案 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>";
}
}