Yii2 kartik Dependent下拉列表不加载下一个下拉列表

Yii2 kartik Dependent下拉列表不加载下一个下拉列表,yii2,yii2-advanced-app,kartik-v,Yii2,Yii2 Advanced App,Kartik V,我正在使用kartik下拉小部件。当我选择该地区时,它必须在特定下拉列表中加载该地区的所有城市(例如,id为city\u id的城市)。 在chrome网络选项卡中,我可以看到该操作返回所有城市的预期结果json格式 { "output": { "40": "Велико Търново", "41": "Горна Оряховица", "42": "Елена", "43": "Златарица", "44": "Лясковец",

我正在使用kartik下拉小部件。当我选择该地区时,它必须在特定下拉列表中加载该地区的所有城市(例如,id为
city\u id
的城市)。 在chrome网络选项卡中,我可以看到该操作返回所有城市的预期结果json格式

{
  "output": {
    "40": "Велико Търново",
    "41": "Горна Оряховица",
    "42": "Елена",
    "43": "Златарица",
    "44": "Лясковец",
    "45": "Павликени",
    "46": "Полски Тръмбеш",
    "47": "Свищов",
    "48": "Стражица",
    "49": "Сухиндол"
  },
  "selected": ""
}
但是它们不会加载到
#city_id
下拉列表中。我的观点是:

<div class="col-sm-6">

                                <?= $form->field($model, 'region_id')->dropDownList(Region::getAllRegions(), ['id' => 'region-dd', 'prompt'=> ' - ' . Yii::t('app', 'Region') . ' - ']); ?>

                            </div>
                            <div class="col-sm-6">

                                <?= $form->field($model, 'city_id')->widget(DepDrop::classname(), [
                                    'options'=>[
                                        'id'=>'city-id'
                                    ],
                                    'pluginOptions'=>[
                                        'allowClear' => true,
                                        'depends' => ['region-dd'],
                                        'url' => Url::to(['/system-information/load-cities'])
                                    ]
                                ]); ?>

                            </div>

提前谢谢你

您必须提供
name=>id
text
成对的
value
以分配给单个选项,如果查看,您将看到必须返回如下所示的数组

[
   'out'=>[
       ['id'=>'<city-id>', 'name'=>'<city-name>'],
       ['id'=>'<city-id>', 'name'=>'<city-name>']
    ],
    'selected'=>'<city-id>'
]
[
  {
    "id": "40",
    "name": "Велико Търново"
  },
  {
    "id": "41",
    "name": "Горна Оряховица"
  },
  {
    "id": "42",
    "name": "Елена"
  },
  {
    "id": "43",
    "name": "Златарица"
  }
]
您没有添加方法
City::getAllCities($region\u id)
返回
$out
数组,但根据文档,在非常基本的级别上,它应该如下所示

注意:分别更改
名称,我假设您有城市的
id
名称
列,如果城市名称有任何其他列名,如
city\u name
,则必须为查询中的
city\u name
字段创建别名
name

这将返回一个如下所示的数组

Array
(
    [0] => Array
        (
            [id] => 40
            [name] => Велико Търново
        )

    [1] => Array
        (
            [id] => 41
            [name] => Горна Оряховица
        )

    [2] => Array
        (
            [id] => 42
            [name] => Елена
        )

    [3] => Array
        (
            [id] => 43
            [name] => Златарица
        )

)
它将被编码为JSON,如下所示

[
   'out'=>[
       ['id'=>'<city-id>', 'name'=>'<city-name>'],
       ['id'=>'<city-id>', 'name'=>'<city-name>']
    ],
    'selected'=>'<city-id>'
]
[
  {
    "id": "40",
    "name": "Велико Търново"
  },
  {
    "id": "41",
    "name": "Горна Оряховица"
  },
  {
    "id": "42",
    "name": "Елена"
  },
  {
    "id": "43",
    "name": "Златарица"
  }
]
最终,当按行编码时

echo Json::encode(['output'=>$out, 'selected'=>'']);
它会回来的

{
  "output": [
    {
      "id": "40",
      "name": "Велико Търново"
    },
    {
      "id": "41",
      "name": "Горна Оряховица"
    },
    {
      "id": "42",
      "name": "Елена"
    },
    {
      "id": "43",
      "name": "Златарица"
    }
  ],
  "selected": ""
}

希望这有帮助。

现在就试试:)谢谢!当然,慢慢来@TomaTomov,我编辑了一些东西,只是重新检查一下答案,现在一切都好了。多谢各位!
{
  "output": [
    {
      "id": "40",
      "name": "Велико Търново"
    },
    {
      "id": "41",
      "name": "Горна Оряховица"
    },
    {
      "id": "42",
      "name": "Елена"
    },
    {
      "id": "43",
      "name": "Златарица"
    }
  ],
  "selected": ""
}